Представление не обновляется при изменении наблюдаемого

Я пытаюсь перерисовать список при обновлении контейнера списка:

{^{for selectedScenario.instances}}
     <div>{^{:name}}</div>
{{/for}}

Когда я использую $.observable(data).setProperty("selectedScenario", сценарий), ничего не меняется. В http://jsfiddle.net/ep76m4af/1/ вы можете увидеть это в действии. ObserveAll показывает, что сами данные обновляются и событие запускается правильно.


person Laurens    schedule 01.09.2015    source источник


Ответы (1)


Причина, по которой он не работает, заключается в том, что вы используете «глубокий путь» selectedScenario.instances, который по умолчанию «прислушивается» к наблюдаемым изменениям только на уровне листьев, а не глубже. Чтобы включить прослушивание изменений в объекте selectedScenario, а не только в свойстве листа instances, вам нужно заменить . на ^, чтобы указать, что вы хотите прослушивать более глубокий уровень пути:

{^{for selectedScenario^instances}}
     <div>{^{:name}}</div>
{{/for}}

См. раздел Пути: конечные изменения или глубокие изменения в этом разделе документации: http://www.jsviews.com/#observe.

См. также такие примеры, как Пример: JsViews с простыми объектами и массивом в этом разделе: http://www.jsviews.com/#explore/objectsorvm.

Обновлен jsfiddle здесь: http://jsfiddle.net/ep76m4af/2/

person BorisMoore    schedule 01.09.2015
comment
Спасибо, что указали мне на примеры и документацию по глубоким путям. Я читал это раньше, но это было много, поэтому я забыл эту часть .. - person Laurens; 02.09.2015