javascript - knockoutjs 订阅未触发

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

以及绑定(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/

相关文章:

javascript - JS 轮播不会移动

knockout.js - 拒绝可观察值变化

javascript - 如何防止 knockout 嵌套排序允许在子列表中删除?

javascript - 将回调功能添加到我的简单 javascript 函数

javascript - 如何配置 jsbeautifier 设置以实际美化我的 HTML/Javascript 代码

javascript - 如何在单个连接中用 Javascript 上传大文件?

javascript - Ajax 不发布大图像的 base64 数据

knockout.js - jquery mobile 和 knockoutjs 输入类型搜索绑定(bind)问题

javascript - 对 knockout.js 中的模糊事件使用react

javascript - 模板 foreach 中未定义 knockout 打印