2013-07-17 3 views
0

Должен ли я принудительно обновить? У меня есть сетка, которая обновляется, когда я вызываю «remove», но индексы не переупорядочиваются.JsViews #index не обновляется при изменении модели просмотра

Кто-нибудь сталкивался с этим раньше?

**Remove function:** 
$("#result") 
    .on("click", ".change", function(){ 
    var dataItem = $.view(this).data; 
     $.observable(dataItem).setProperty("name", dataItem.name + "*"); 
    }) 
    .on("click", ".remove", function(){ 
    var index = $.view(this).index; 
     $.observable(people).remove(index); 
    }); 

http://jsfiddle.net/mawaru/mfMBA/

UPDATE: Я думаю, что я понял это.

Я добавил эту строку.

 $.observable(people).refresh(people); 

Это правильно?

ответ

0

Ваш тег, который отображает #index, не привязан к данным. Вам нужно написать либо:

<span>{^{:#index + 1}}</span>

или

<span data-link="#index + 1"></span>

Вызов $.observable(people).refresh(people); будет работать, потому что вновь делает все элементы, а не пошагово вставки или удаления. Но подходы, которые я предлагаю выше, лучше, поскольку они позволяют вставлять и удалять инкрементные.

+0

спасибо Борису! Это сработало! – mawaru

+0

Есть ли способ отправить обновленный индекс в другую функцию javascript при удалении. Когда я пытаюсь onclick = "removeTags ({{: # index}}), индекс не обновляется после каждого удаления. – user1776573

+0

Да - но лучше не использовать привязку события DOM Level 0: onclick = ... Я бы посоветовал вам использовать data-link = "{on removeTags}". Вы можете передать параметры - data-link = "{on removeTags #index}" - но если все, что вы хотите, это индекс, вам не нужно его передавать, если вы используете eventArgs.view.index, Взгляните также на «http://www.jsviews.com/#computed», «http://www.jsviews.com/#link-events» и «http://www.jsviews.com/#samples/calculate/shopping-cart @ tmpl "- и функция: function removeItem (ev, eventArgs). С параметром это будет функция removeItem (indexParam, ev, eventArgs). { – BorisMoore

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