-3

我已经开始学习淘汰赛 API。我写了一小段代码,很简单,但它不起作用。请帮帮我

<h4>People(<span data-bind="text: controls().length"> </span>)</h4>
<ul data-bind="foreach:controls">
    <li>
        Id: <span data-bind="text: controls.id"></span>
    </li>
</ul>
<button data-bind="click:$root.addControls">Add</button>
var Form = function(){
    this.controls = [{id:"T1",type:"TextInput"},
                                     {id:"T2",type:"TextInput"}];
    this.addControls = function(){
    this.controls.push({id:"",type:""})           
    };

}

var Controls = function(id,type){
   this.id = id;
   this.type = type;              

}


ko.applyBindings(new Form());

JS小提琴

4

1 回答 1

0

检查这个小提琴:http: //jsfiddle.net/ingro/fTptZ/38/

我不知道为什么它不能在线工作,但在我本地制作的测试页面上很好。

无论如何,你的一些错误:

  1. 控件应该是一个 observableArray:

    self.controls = ko.observableArray([{id:"T1",type:"TextInput"}, {id:"T2",type:"TextInput"}]);
    
  2. 当您使用“foreach”绑定时,您不需要将数组作为前缀:

    Id:<span data-bind="text: id"></span>
    
  3. 你用的是旧版本的 Knockout,2.1.0 已经出来了!

希望这可以帮助!

于 2012-06-18T10:24:00.533 回答