2013-03-08 63 views
0

我试图做jsFiddle,但它抱怨模板脚本,但下面是一个完整的例子,你可以把它放到.html文件中并在本地查看。Knockout嵌套的foreach模板不能按预期工作

<html> 
<head> 
<title>Test</title> 

<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.9.1.min.js"></script> 
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/knockout/knockout-2.2.1.js"></script> 
<script type="text/javascript"> 

var InnerModel = function() { 
    this.name = ko.observable(""); 
} 

var OuterModel = function() { 
    this.name = ko.observable(""); 
    this.innerItems = ko.observableArray(); 
} 

var ViewModel = function() { 
    this.name = ko.observable(""); 
    this.outerItems = ko.observableArray(); 
} 

$(document).ready(function() { 

    var model = new ViewModel(); 
    ko.applyBindings(model) 

    model.name("ModelName"); 
    outerItem = new OuterModel(); 
    outerItem.name("Outer 1 Name"); 
    model.outerItems.push(outerItem); 
    innerItem = new InnerModel(); 
    innerItem.name("Inner 1 Name"); 
    outerItem.innerItems.push(innerItem); 
}); 
</script> 

</head> 
<body> 
<script type="text/html" id="inner-template">  
    <li><span data-bind="text: inner.name"> </span></li> 
</script> 

<h3>Model Name: <span data-bind="text: name"></span></h3> 

<div data-bind="foreach: outerItems" > 
    <h4><b>Outer:</b> <span data-bind="text: name"></span></h4> 
    <ul databind="template: { name: 'inner-template', foreach: innerItems, as: 'inner' }" ></ul> 
</div> 

</body> 
</html> 

我所期望的输出是:

Model Name: ModelName 
Outer: Outer 1 Name 
- Inner 1 Name 

- Inner 1 Name片的输出不见了。

我在做什么错?

+0

任何错误....? – Jack 2013-03-08 14:59:54

+0

不,我没有得到任何错误。 – Pete 2013-03-08 15:02:29

回答

2

数据绑定= “模板[...]”,应该是数据绑定;)

+0

亲爱的上帝,当然,不能相信我错过了! – 2013-03-08 15:36:02

+0

很容易忽略,事实上我仍然必须在注意之前运行它。 :) – Grim 2013-03-08 15:37:25

+0

我完全重写了它在jsFiddle中的大部分,但仍然没有抓住它! – 2013-03-08 15:38:25