Update Я понимаю, что это не «сокрушительный путь», но.выколотки набор элементов данных
Я хотел бы обновить данные непосредственно связанного элемента.
Чтобы получить данные элемента, я хотел бы использовать
var data = ko.dataFor(this);
Я хотел бы сделать что-то вроде
ko.setData(element, key, value)
для установки элементов внутренних данных, не вызывая каких-либо привязок.
В настоящее время я делаю следующее.
var data = {new_data:"yes please"};
ko.cleanNode(element);
ko.applyBindings(data, element);
Я понимаю, что это не лучшая практика, но я бы хотел найти чистый управляемый способ сделать это в любом случае.
После просмотра источника. Можно ли попасть в сеттер для хранилища данных?
комплект: функция (узел, ключ, значение) https://github.com/knockout/knockout/blob/master/src/utils.domData.js line 24;
* «Я хотел бы обновить данные непосредственно связанного элемента». * - Я думаю, вам нужно сначала объяснить это. Это похоже на то, что у вас неправильная базовая концепция. – Tomalak
Это выглядит как [XY question] (http://meta.stackexchange.com/a/66378). Чего вы на самом деле пытаетесь достичь? Борьба с нокаутом, подобная этому, не «не самая лучшая практика», это рецепт мешка с болью, который, скорее всего, вызовет уродливые ошибки, которые могут стать причиной отладки, и, вероятно, легко избежать этого, перейдя на него в другом направлении. – janfoeh
Ну, я чувствую, что привязка foreach слишком много работает, когда небольшое изменение внесено в один из свойств элемента базового массива. Также я не хочу использовать наблюдаемое для каждого свойства. У меня есть механизмы, которые рассказывают мне, что изменилось и где. Отражая, что я хочу сделать некоторые хитроумные обновления html в элементе bound (li), если я не вызываю изменения в наблюдаемом массиве, данные привязки становятся устаревшими. Назовите это личная стратегия оптимизации. Короче говоря, я знаю, что базовая модель изменилась, но я не хочу перестраивать весь список. – beedeejay