Javascript 击倒球没有开火
我有以下客户端代码:Javascript 击倒球没有开火,javascript,knockout.js,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
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>
select
成功填充,可观察到的SelectedLanguage
中的值发生变化,但是警报不会显示。有什么想法吗
另外,不知道是否相关,但中的观察数组。映射是一个数组[0]
。请检查。注意,“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());
您是否在该绑定之外的任何地方引用了SelectedLanguage
?例如,您是否无意中在其他地方执行了SelectedLanguage=ko.observable
,并将其更改为不同的observable,而不是更新现有的observable?如果您这样做,订阅将不会启动,因为它位于“错误”的可观察对象上。我正在使用self.SelectedLanguage(newValue)更新值(或者我认为我会这么做)。这是否会影响订阅机制?