淘汰赛设置元素数据

时间:2015-04-09 09:13:37

标签: javascript knockout.js

更新 我意识到这不是“淘汰赛方式”,但是。


我想直接更新绑定元素的数据。

要获取元素的数据,我会使用

var data = ko.dataFor(this);

我想做点什么

ko.setData(element, key, value)

设置元素内部数据,而不触发任何绑定。

我目前正在做以下事情。

       var data = {new_data:"yes please"};
       ko.cleanNode(element);
       ko.applyBindings(data, element);

我意识到这不是最好的做法,但无论如何我想找到一种干净易懂的方法。

查看来源后。是否有可能获得数据存储区的setter?

set:function(node,key,value) https://github.com/knockout/knockout/blob/master/src/utils.domData.js 第24行;

2 个答案:

答案 0 :(得分:0)

ko.contextFor(element).$datako.dataFor(element)几乎相同。

所以你可以做ko.dataFor(element).relevantProperty('newValue')。

答案 1 :(得分:-1)

正如许多评论所述 - 不推荐这种方法。

我用痒痒了。

ko.contextFor(element);

让我可以访问以下内容。

$data: Object
$index: d()
$parent: Object
$parentContext: a.N
$parents: Array[1]
$rawData: Object
$root: Object
ko: Object

然后我更改了$ data对象中的相关属性。