1

我的淘汰赛绑定没有更新。我有一个设置为的字段

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);
});    

http://jsfiddle.net/d577K/38/

4

3 回答 3

2

当你写

new AppViewModel()

您正在创建一个新的 AppViewModel 对象。但是,您永远不会保存对该对象的引用。

当您尝试更新时AppViewModel.firstName(name);AppViewModel是您的构造函数,并且您正在调用构造函数中不存在的方法。您需要将对象创建为变量,然后引用它。

var app = new AppViewModel();

...

app.firstName(name);

这是你的fiddle的更新,它现在可以工作了。

于 2013-03-22T01:55:03.447 回答
2

您引用的是 AppViewModel 类而不是实际对象...尝试在使用敲除绑定之前实例化视图模型,然后引用该实例:

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);

});

这是小提琴:http: //jsfiddle.net/d577K/178/

于 2013-03-22T01:55:45.420 回答
0

有什么理由将名称更新功能保留在模型之外?

这个怎么样:http: //jsfiddle.net/dvdrom000/d577K/41/

html更新

<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());
于 2013-03-22T02:18:00.713 回答