我的淘汰赛绑定没有更新。我有一个我设置为
的字段this.firstName = ko.observable("Bert");
我打电话的时候:
AppViewModel.firstName(name);
我需要它来更新。这是一个jsfiddle:
function AppViewModel() {
this.firstName = ko.observable("Bert");
this.lastName = ko.observable("Bertington");
}
// Activates knockout.js
ko.applyBindings(new AppViewModel());
// When I click button I want the name to change
$('input[type=button]').click( function() {
var name = 'New Name';
AppViewModel.firstName(name);
});
答案 0 :(得分:2)
写作时
new AppViewModel()
您正在创建一个新的AppViewModel对象。但是,您永远不会保存对该对象的引用。
当您尝试更新AppViewModel.firstName(name);
时,AppViewModel
是您的构造函数,并且您正在调用构造函数中不存在的方法。您需要将对象创建为变量,然后引用它。
var app = new AppViewModel();
...
app.firstName(name);
以下是fiddle的更新,现在正在使用。
答案 1 :(得分:2)
您正在引用AppViewModel类而不是实际对象...尝试在使用knockout绑定之前实例化视图模型,然后引用实例:
function AppViewModel() {
this.firstName = ko.observable("Bert");
this.lastName = ko.observable("Bertington");
}
var vm = new AppViewModel();
// Activates knockout.js
ko.applyBindings(vm);
//When I click button I want the name to change
$('input[type=button]').click( function() {
var name = 'New Name';
vm.firstName(name);
});
答案 2 :(得分:0)
是否有任何理由将名称更新功能保留在模型之外?
这个怎么样:http://jsfiddle.net/dvdrom000/d577K/41/
html update
<input type="button" value="test" data-bind="click: NewName" />
<强> JS 强>
function AppViewModel() {
this.firstName = ko.observable("Bert");
this.lastName = ko.observable("Bertington");
this.NewName = function(){
this.lastName("New name");
}
}
// Activates knockout.js
ko.applyBindings(new AppViewModel());