我有以下 javascript:
function RandomViewModel() {
var self = this;
self.RnadomSquaresK = ko.observableArray([
randomSquare(),
randomSquare(),
]);
}
var randomSquare = function() { return ko.observable({
innate: ko.observableArray([
{ star: "test1", Class: "starList", Style: {} },
{ star: "test2", Class: "starList", Style: {display:'inline'} },
{ star: "test3", Class: "starList", Style: {} },
{ star: "test4", Class: "starList", Style: {} }
])
})};
ko.applyBindings(new RandomViewModel());
它基本上是创建一个由两个 observableArrays 组成的 observableArray,每个 observableArrays 有 4 个元素。
我有以下html:
<script id="starTemplate" type="text/html">
<!-- ko if: ($index >= 0) -->
<div data-bind="text: $index, attr: { class: Class }, style: Style"></div>
<!-- /ko -->
</script>
<div class="starList" data-bind="template: { name: 'starTemplate', foreach: RnadomSquaresK()[0]().innate }"></div>
我期望根据它们绑定的 observableArray 打印每个索引来创建 div。(在这种情况下:4 个 div,因为所有索引都应该等于或大于 0)
我实际得到的是:空白。
这是 JSFiddle 链接:http: //jsfiddle.net/qrwBE/
如果我将 if 语句更改为 ex: if: $index != 0
,我将打印绑定到数组的所有 4 个元素,但我不太明白为什么在这种情况下第一个元素(索引 0)与其他 3 个元素一起打印。
我是否if
错误地使用了该语句?
非常欢迎对正在发生的事情进行解释,以及有关 javascript 等的任何其他评论。