KnockoutJS将JS映射到选择菜单

时间:2013-10-14 22:57:55

标签: asp.net-mvc-4 knockout.js

我有这段代码:

     self.States = ko.observableArray();
   self.GetAllStates = function () {
    $.getJSON('/Reference/GetAllStates', function (data) {
        var mapped = ko.mapping.fromJS(data);
        self.States = mapped;
    })
}

     <select class="selectpicker" data-bind="options: States, optionsText: 'State'"></select>

选择菜单中没有任何内容。 JS控制台中没有错误。我已经验证服务器正在返回数据。服务器正在返回JSON数组。我做错了什么?

由于

1 个答案:

答案 0 :(得分:2)

你需要在observableArray

上使用'setter'
self.States = ko.observableArray();
self.GetAllStates = function () {
$.getJSON('/Reference/GetAllStates', function (data) {
    var mapped = ko.mapping.fromJS(data);
    self.States(mapped);
});

设置observable的值时,必须将其传递给函数。这是Knockout中最基本的概念,因此我建议您查看文档以更好地理解这些可观察对象的工作原理。