У меня проблема с Knockout, которая кажется немного озадачивающей.KnockoutJS не обновляет вид
У меня есть список контактов, которые я хочу связать с пользовательским интерфейсом (наблюдаемый массив).
Однако я не нуждаюсь в том, чтобы элементы сами по себе наблюдались, поскольку они обновляются только через диалоговое окно, и мне не нужно, чтобы каждое поле отслеживалось отдельно.
У меня есть следующие jsFiddle, чтобы продемонстрировать мою проблему:
var c = contacts()[0];
c.name="James";
contacts.splice(0, 1, c);
// the contacts observableArray is now correct but the UI is unchanged
По какой-то причине метод сращивания не обновляет вид ??
Заранее спасибо.
Я действительно думаю, что Knockout должен позволить триггер («изменить») или какой-либо другой метод на наблюдаемых, чтобы облегчить этот тип вещей.
Спасибо за внимание к этому методу. Проблема с отображением каждого отдельного поля заключается в том, что обновление их с сервера с помощью JSON намного сложнее. Также зачем отслеживать значения, если они никогда не будут меняться индивидуально? 1. открыть править Диалог (jQueryUI) 2. скопировать значения контактов в форму внутри диалогового окна 3. при нажатии кнопки сохранения считывать значения формы в объект JS 4. заменить запись в списке контактов. Другим способом для # 4 будет перебирать каждое свойство JS и вызывать наблюдаемый каждый раз при вызове рендера на странице. – DavidMedlock
Вот что создано [плагин отображения] (http://knockoutjs.com/documentation/plugins-mapping.html). С очень небольшим усилием он выполняет все необходимые вам сопоставления. Он может даже отображать только половину вашего JSON, если вы настроите его на это. Он также заботится о том, чтобы отобразить все, если вы хотите обновить сервер. – Tomalak
Вы избили меня до комментария о картографическом плагине. @DavidMedlock, вам не нужны свойства, которые можно наблюдать для шага № 2 в вашем комментарии? Если свойства не наблюдаются, как нокаут знает, что значения в текстовых боксах вашей формы изменились, и соответственно обновить свойства в вашей модели просмотра? – danludwig