敲除模板绑定不能完全工作

时间:2014-01-11 18:39:25

标签: javascript html5 knockout.js knockout-templating

我正在使用淘汰赛的javascript模板。

<div data-bind="template: { name: 'treeElement', foreach: results }“&GT;'

<script type=text/html>
 <!--ko if: a>b -->
    <div data-bind={textcontent:a}/>`
<!--/ko-->
</script>

类似于上面的内容..我正在使用textcontetn显示div元素,但值为a,但是无容器绑定未应用... a&gt; b不计算。所以它只是忽略了语法..

1 个答案:

答案 0 :(得分:0)

  • 当您在注释绑定中编写类似属性的名称时 你需要执行它们才能将它们解析为结果 目前你只是比较两个函数。

  • 此外,您的标记无效,因为您的两个div标记都没有 关闭并以有线单引号结束,这使得绑定失败。

  • 在淘汰赛中有这样的约束,称为textcontent

如果您将html更改为:

<div data-bind="template: { name: 'treeElement', foreach: results }"></div>

<script type="text/html" id="treeElement">
 <!--ko if: a() > b() -->
    <div data-bind="text: a() + ' is bigger than ' + b()"/></div>
 <!--/ko-->
</script>

我们假设您有一个类似于我的场景构造的视图模型:

var treeElements = [
    {"a" : 2 , "b" : 1},
    {"a" : 4 , "b" : 6},
    {"a" : 9 , "b" : 5},
    {"a" : 2 , "b" : 7},
    {"a" : 4 , "b" : 9},
]

function treeElement(data){
    this.a = ko.observable(data.a);
    this.b = ko.observable(data.b);
}

function viewmodel(){
    var self = this;
    self.results = ko.observableArray();
    self.init = function(){
        ko.utils.arrayForEach(treeElements, function(item){
            self.results.push(new treeElement(item));
        });
    }
}

var myVM = new viewmodel();
myVM.init();
ko.applyBindings(myVM);

你应该好好去。

Here is also a working fiddle

相关问题