将数据从服务器绑定到淘汰赛的最佳方法

时间:2015-10-29 12:47:07

标签: knockout.js

大家好我是knockout.js的新手,并且感兴趣的是将数据从服务器绑定到淘汰赛的最佳方法。例如,我想绑定类别变量,然后在选择中使用:

var myViewModel = function(){
    var self = this
    self.categories = []
    $.getJson("/ajax/categories", function(r){
        self.categories = r; 
    }
}
ko.applyBindings(new myViewModel ());

// in html
<select data-bind='options: categories'> </select>

2 个答案:

答案 0 :(得分:1)

var myViewModel = function() {
    var self = this
    self.categories = ko.observableArray([]);
    $.getJson("/ajax/categories", function(r) {
        self.categories(r); 
    }
}
ko.applyBindings(new myViewModel());

in html

<select data-bind='options: categories'> </select>

更新 - 说明

  • 一个创建&#34; myViewModel&#34;为了将其绑定到标记。
  • 通过get请求从服务器中检索类别集合。
  • 请求是异步操作,因此类别数组为空时为空 knockout在applyBindings方法中绑定它。
  • 经过一段时间后,请求返回类别数组。
  • 并将返回的数组放入可观察数组中。
  • 可观察数组的内容正在发生变化,所有订阅者都会获得 通知了。
  • Knockout绑定引擎会收到有关阵列更改和重建的通知 标记。

答案 1 :(得分:0)

上面的解释似乎很好,但在2个地方的语法错误很少:

1. $ .getJson应为$.getJSON大写
2. $.getJSON 关闭括号缺少

其他一切都很好,可以从下面复制更正后的代码:

var myViewModel = function() {
    var self = this
    self.categories = ko.observableArray([]);
    $.getJSON("/ajax/categories", function(r) {
        self.categories(r);
    })
}
ko.applyBindings(new myViewModel());