Knockout JS清除函数ko.observable

时间:2013-01-28 18:21:34

标签: knockout.js

我想删除/清除其绑定字段。

self.Selected = ko.observable();

"Selected": {
    "ID": 5,
    "Name": "22",
    "Active": true,
    "Temp": "2013-01-28T18:14:48.340Z"
  }

self.Selected.remove()--->错误:没有方法'删除'

self.Selected.removeAll(); - >无法调用未定义的方法'removeAll'

self.Selected.cleanNode()--->错误:没有方法'cleanNode'

http://jsfiddle.net/yvTFN/24/:所以你可以看到一个有效的例子

编辑名称后,self.update =函数将起作用,然后应清除属性Selected,否则,如果再次单击update(无值),则值将以空字符串更新。

2 个答案:

答案 0 :(得分:19)

只需将Selected的值设置为null

self.Selected(null);

编辑:您的jsfiddle正在使用ko.removeNode而不是您想要的。

有关正常工作的版本,请参阅:http://jsfiddle.net/yvTFN/26/

答案 1 :(得分:1)

self.Selected.clearBindings = function __clearSelection__() {
    self.Selected = new ko.observable(self.Selected());
    self.Selected.clearBindings = __clearSelection__;
}

这种方法可以做你需要的,取决于你真正需要什么......有一些警告

  • 我不知道KnockoutJS的内部结构
  • 某些浏览器(IE< 9)
  • 可能会出现内存泄漏
  • 如果这是一个长时间运行的页面,并且此方法多次调用,则可能会出现意外结果。