我有以下客户端代码:
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);
。
以及绑定(bind)到 SelectedLanguage
的 HTML 选择:
<select id="selectAvailableLanguages" class="form-control language-select" data-bind="options: AvailableLanguages, optionsText: 'Code', value : SelectedLanguage"></select>
select
已成功填充,SelectedLanguage
内的值可观察到的更改,但 alert
不会显示。有什么想法吗?
此外,不知道是否相关,但 __ko.mapping_
内的 observe
数组是一个 array[0]
..
最佳答案
请检查fiddle 。请注意,“AvailableLanguages”和“SelectedLanguage”属性应存在于同一上下文中,即属于绑定(bind) View 模型。
我修改了你的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());
关于javascript - knockoutjs 订阅未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34726183/