2015-07-23 2 views
0

Я создал jsfiddle, чтобы demostrate моей проблемыЗамена объекта в массиве

`http://jsfiddle.net/hin123/tcVhN/129/`  

У меня есть надстройка и кнопка работает в этом примере удалить, но, кажется, я не могу найти сделать кнопку редактирования. Я не уверен, что не так, помощь будет оценена

+0

Ваш вопрос непонятен. Если вы нажимаете объект в массиве, как вы можете заменить объект? –

+0

@AbhishekPrakash, извините за путаницу, я должен это прояснить. Я нажимаю объект в массиве, который затем отображается в виде списка. Затем в моем представлении списка я перенаправляю элемент списка в форму редактирования, чтобы отображать детали моего объекта, и в этой форме есть кнопка сохранения, которая может сохранять измененный объект подробно –

+0

очистка с большим количеством путаницы чувак –

ответ

1

Я считаю, что вы должны использовать ng-repeat для рендеринга списка, и каждый элемент списка должен иметь некоторую кнопку редактирования. Нажав на кнопку, вы должны перейти на страницу редактирования.

Лучше всего обновить объект по этому индексу, вместо того, чтобы нажимать новый объект в массиве.

Вы можете обновить метод UpdateData фабрики на что-то вроде этого -

updateData: function (index, changedObj) { 
    //merge the tempData object at position index and changedObject obj 
    angular.extend(tempData[index], changedObject); 
} 
+0

Благодарим вас за ответ. У меня есть кнопка просмотра списка и редактирования. У меня есть пример кода, например, http://codepen.io/ionic/pen/JsHjf. Сейчас я боюсь, что после того, как я нажал кнопку редактирования, она откроет форму редактирования, которая включает в себя детали каждого списка и кнопку сохранения. Я пытаюсь сохранить кнопку сохранения, чтобы сохранить детали формы. Мне нужна помощь с кодом здесь, чтобы сохранить детали. Спасибо –

+0

Где вы кешируете свой массив? В службе? –

+0

Да, это в серцике, я называю свое обслуживание WebApi. Чтобы получить весь массив, у меня есть массив, похожий на этот var tempData = [] в службе, а затем, чтобы вернуть его, у меня есть функция getAll: function ({return tempData}) что-то вроде этого –

0

Если вы привязки данных значений записи о том, что пользователь редактирует, то ваша save функция может быть столь же просто, как:

$scope.save = function() { 
    WebApi.updateData($scope.tempData); 
}; 

Это будет работать только, если, конечно, WebApi.updateData может обнаружить изменения в существующих объектах. (В вашем примере установка tempData возвращает к себе изменения в объекте, привязанным к данным.)

Чтобы настроить привязку данных на странице редактирования, вы можете сохранить отредактированный объект в области ($scope.editedRecord), а затем сделайте что-нибудь вроде:

<input type="text" ng-model="editedRecord.customerName"> 

И так далее для каждого свойства отредактированной записи, которую вы выставили.

+0

Привет, Ной, благодарю вас за ваш ответ, так вы сделаете что-то подобное в контроллере? $ scope.editedRecord = function (data) { $ scope.tempData.push (данные) } –

+0

Я не уверен, что у меня есть синтаксис правильно –

+0

Это будет зависеть от того, как именно вы переходите со страницы своего списка на страницу редактируйте страницу, но в моих фрагментах выше я предполагаю, что '$ scope.editedRecord' является одним из объектов из' tempData' (например, ваш примерный объект: '{id: 0, владелец:" Amy ", ClaimType:" Others " , customerName: ABC Company} '). Ваша форма привязывала бы имя customerName (например), чтобы она отображала «ABC Company» и позволяла пользователю изменять ее. Мой фрагмент показывает текстовое поле, но вы, конечно же, можете выбрать выбор с предопределенными параметрами. –

Смежные вопросы