Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 击倒球没有开火_Javascript_Knockout.js - Fatal编程技术网

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)更新值(或者我认为我会这么做)。这是否会影响订阅机制?