希望这对某人有所帮助,Knockout 对我来说是一段旅程,也是一个令人心碎的模特。
单击按钮时,我需要加载或多或少的东西,所以起初我认为这会对我有所帮助,这是我的第一种方法:
var Task = function(name, description) {
this.name = ko.observable(name);
this.description = ko.observable(description);
}
var ViewModel = function() {
var self = this;
self.tasks = ko.observableArray();
self.clearTask = function(data, event) {
self.tasks.remove(data);
};
self.addTask = function() {
var task = new Task("new", "");
self.tasks.push(task);
};
self.addTask2 = function (name, description)
{
var task = new Task(name, description);
self.tasks.push(task);
}
};
var vm = new ViewModel();
vm.addTask2("Dog Food","description");
ko.applyBindings(vm);
function ClickedMoreItems()
{
vm = new ViewModel()
vm.addTask2("Dog Food2","description");
vm.addTask2("Dog Food3","description");
}
function ClickedLessItems()
{
vm = new ViewModel()
vm.addTask2("Dog Food4","description");
}
一旦我点击 ClickedMoreItems() 什么都没有发生。所以我决定在每个函数中再次使用ko.applyBindings(vm);
它,它有点工作。但是当我点击 ClickedLessItems 时,“Dog Food4”被复制了两次。
function ClickedMoreItems()
{
vm.Clear();
vm.addTask2("Dog Food2","description");
vm.addTask2("Dog Food3","description");
ko.applyBindings(vm);
}
function ClickedLessItems()
{
vm.Clear();
vm.addTask2("Dog Food4","description");
ko.applyBindings(vm);
}
所以我决定这样做并让它发挥作用:
- 按照Tyrsius
ko.applyBindings(vm);
的建议,在开始时使用。
- 创建明确的功能
所以最后的代码是这样的:
var Task = function(name, description) {
this.name = ko.observable(name);
this.description = ko.observable(description);
}
var ViewModel = function() {
var self = this;
self.tasks = ko.observableArray();
self.clearTask = function(data, event) {
self.tasks.remove(data);
};
self.addTask = function() {
var task = new Task("new", "");
self.tasks.push(task);
};
self.addTask2 = function (name, description)
{
var task = new Task(name, description);
self.tasks.push(task);
}
self.Clear = function()
{
self.tasks.removeAll();
}
};
var vm = new ViewModel();
vm.addTask2("Dog Food","description");
ko.applyBindings(vm);
function ClickedMoreItems()
{
vm.Clear();
vm.addTask2("Dog Food2","description");
vm.addTask2("Dog Food3","description");
}
function ClickedLessItems()
{
vm.Clear();
vm.addTask2("Dog Food4","description");
}
您可以在此处查看实际代码