У меня возникла проблема с обновлением шаблона JSViews при изменении базовых данных. Он включает в себя диапазон, связанный с данными, используя функцию конвертера для базовых данных. Когда базовые данные изменяются после асинхронного вызова на сервер, текст диапазона не обновляется.Шаблон JSViews не обновляется при изменении базовых данных
Markup:
{^{for thedata.myarrayobject}}
<span data-link="{myconverter:var1:} name{:'theName' + var2}"></span>
{{/for}}
Сценарий:
$.views.converters({
myconverter: function (val) {
switch (val) {
case 1:
return 'Test1';
break;
case 2:
return 'Test2';
break;
default:
return 'Default';
}
}
});
Пролет правильно отображает на странице загрузки на основе значений в thedata.myarrayobject. Например. если мы имеем:
thedata.myarrayobject[0].var1='1';
thedata.myarrayobject[0].var2='John';
thedata.myarrayobject[1].var1='2';
thedata.myarrayobject[1].var2='Matthew';
будет загружаться:
<span name="theNameJohn">Test1</span>
<span name="theNameMatthew">Test2</span>
Однако, если лежащие в основе изменений данных после асинхронным обратного вызова:
thedata.myarrayobject[0].var1='2';
thedata.myarrayobject[0].var2='John';
thedata.myarrayobject[1].var1='1';
thedata.myarrayobject[1].var2='Matthew';
текст пядь просто остаются на том одна и та же.
Я отлаживал код js, а параметр базового массива 'var1' определенно устанавливается в новое значение. Я пробовал позвонить:
$.observable(thedata.myarrayobject).refresh(thedata.myarrayobject);
, но безрезультатно.
Я, очевидно, хочу, чтобы текст диапазона корректировался, поскольку основные изменения данных - любая помощь будет принята с благодарностью!
Можете ли вы показать свой код, как вы изначально ссылаетесь на данные, а затем на свой код для обновления к новым данным. В идеале jsfiddle - с кнопкой, вызывающей текущий код для обновления к новым данным? Тогда я посмотрю ... – BorisMoore
Привет @BorisMoore - чтобы ответить на ваш вопрос, я использую метод link(), поэтому ссылки на данные должны работать ... но ваш второй вопрос о том, как я обновляю данные указал мне в правильном направлении. Я делаю это, как указано выше: прямое обновление значений параметров в js. Я просто попробовал это в наблюдаемой обертке - и это сработало! Я опубликую его ниже. Есть ли какой-то способ, которым я могу дать вам кредит на это - я сомневаюсь, что я бы сделал это без вашего комментария! – Marco
Я добавил ответ, чтобы показать некоторые альтернативные способы объединить данные «наблюдаемо». – BorisMoore