如何重置列表viewModel

时间:2014-08-18 09:11:56

标签: jquery mvvm knockout.js

我有一个与Knockoutjs实例相同的模型列表:http://jsfiddle.net/rniemeyer/7RDc3/

主:

var viewModel = new GiftModel([
{ name: "Tall Hat", price: "39.95"},
{ name: "Long Cloak", price: "120.00"}
]);
ko.applyBindings(viewModel);

如何通过按钮单击事件new GiftModel([])将对象viewModel重置为null或(not use knock out event),我想每当点击按钮时,Grid将清空Gift。 示例:

$( "#button" ).click(function() {
clearKnockOutViewModel();
});

---> viewModel将为空,html将清除。

2 个答案:

答案 0 :(得分:2)

这是正确的方法。

$( "#button" ).click(function() {
clearKnockOutViewModel();
});

function clearKnockOutViewModel(){
  var element = $('#elementId')[0]; 
  ko.cleanNode(element);
  ko.applyBindings(viewModel, element);
}

如果清空viewModel逻辑,则会松开它。

答案 1 :(得分:1)

您可以使用for弹出每个项目。

<button data-bind='click: clearGifts'>Clear Gifts</button>

self.clearGifts = function() {
    var length = self.gifts().length;
    for (var i = 0 ; i < length ; i++) {
       self.gifts.pop();
    }
}; 

编辑:如果礼物是observableArray,您可以使用removeAll。

self.clearGifts = function() {
    self.gifts.removeAll();
};