Angular X-Editable - дополнительные параметры для onbeforesave

Я использую angular-xeditable для редактирования значения таблицы в строке и хочу сохранить это значение в базе данных после размытия ввода. Я хочу вызвать функцию сохранения с помощью атрибута onbeforesave.

Проблема в том, что функция принимает в качестве параметра только измененное значение. Мне также нужен идентификатор тега, к которому применяется xeditable.

Итак, как я могу передать ссылку на элемент DOM (лучший вариант) или просто на идентификатор элемента (в этом случае будет достаточно).

Большое спасибо!


person medowlock    schedule 05.03.2014    source источник
comment
В качестве временного решения я добавил это как параметр к функции save ($ data, this), а затем я обращаюсь к нему с помощью el. $ Editable.elem [0] .id, где функция save (data, el). Но должен быть лучший способ сделать это ...   -  person medowlock    schedule 05.03.2014
comment
в вашем ng-repeat на переднем конце, в вашем атрибуте onBeforeSave вы можете передать $ index, чтобы он был похож на onBeforesave = myFUnction ($ index), а затем использовать индекс для нацеливания на элемент массива для изменения значений. поэтому, если ваш внешний интерфейс ng-repeat использует $ scope.items, вы будете использовать индекс для таргетинга на $ scope.items [index], а затем вы можете взять все данные из этого индекса и передать данные на сервер для выполнения некоторых обновлений базы данных.   -  person Darryldecode    schedule 08.03.2014
comment
Спасибо, Дэррил. Вы можете опубликовать это как ответ, и я приму его.   -  person medowlock    schedule 28.03.2014
comment
Я уже повторно разместил свой комментарий как ответ. Рад, что помог.   -  person Darryldecode    schedule 29.03.2014


Ответы (2)


на вашем ng-repeat во внешнем интерфейсе, в вашем атрибуте onBeforeSave вы можете передать $index, чтобы он был похож на onBeforesave="myFUnction($index)", а затем использовать индекс для нацеливания на элемент массива для изменения значений. поэтому, если ваш внешний интерфейс ng-repeat использует $scope.items, вы будете использовать индекс для таргетинга на $scope.items[index], а затем вы можете взять все данные из этого индекса и передать данные на сервер для обновления базы данных.

person Darryldecode    schedule 29.03.2014
comment
Но $ scope.items не содержит обновленного значения $ data с onBeforeSave. Как получить и обновленное значение, и элемент или индекс элемента? - person roob; 25.08.2017

Имейте в виду, что вы можете передать повторяющийся объект, это может помочь, когда вы попытаетесь определить объект по этому индексу, как объясняется здесь:

Как использовать методы onBeforeSave / onAfterSave в Angular-Xeditable с более чем $ data в качестве параметра

<div ng-repeat="p in people">
    <a href="#" editable-text="p.name" onaftersave="updatePerson(p)">{{p.name}}</a>
</div>

Тогда у вас будет следующий код в вашем контроллере:

$scope.updatePerson = function(person) {
    var ret = PersonService.save(person); // or whatever save mechanism you use
    // You need to return a error string if save fails, true otherwise
    if (ret !== null) {  // You have to make sure this logic works for your save service
        return ret;
    }
    return true; 
}

Я предпочитаю это решение, потому что оно позволяет избежать проблем с индексом + фильтрацией, как описано здесь: http://codeutopia.net/blog/2014/11/10/angularjs-best-practices-avoid-using-ng-repeats-index/

person Ilan    schedule 25.02.2015