knockoutjs订阅没有解雇

时间:2016-01-11 16:14:01

标签: javascript knockout.js

我有以下客户端代码:

var ProfileManager = function () {
    self.SelectedLanguage = ko.observable();
    self.SelectedLanguage.subscribe(function (newValue) {
        alert("The person's new name is " + newValue);
    });
    var bindUIwithViewModel = function (viewModel) {
        ko.applyBindings(viewModel);
    };
}

我后来做bindUIwithViewModel(self);

和绑定到SelectedLanguage的HTML选择:

<select id="selectAvailableLanguages" class="form-control language-select" data-bind="options: AvailableLanguages, optionsText: 'Code', value : SelectedLanguage"></select>

成功填充了selectSelectedLanguage可观察内的值发生了变化,但alert刚刚赢了。有什么想法吗?

另外,不知道是否相关,但observe内的__ko.mapping_数组是array[0] ..

1 个答案:

答案 0 :(得分:0)

请检查fiddle。注意,“AvailableLanguages”和“SelectedLanguage”属性应存在于同一上下文中,即属于绑定视图模型。

我修改了你的JS代码:

var ProfileManager = function () {
    self.SelectedLanguage = ko.observable();
    self.SelectedLanguage.subscribe(function (newValue) {
        alert("The person's new name is " + JSON.stringify(newValue));
    });
    self.AvailableLanguages = [ { Code: 'c++', Person: 'John' }, { Code: 'c#', Person: 'Mark' } ]

}

ko.applyBindings(new ProfileManager());