1
以下是#parent.data
工作原理和第一個標題可以更改的示例。但是當#parent.data
被替換爲~root
,test2
標記未被呈現。jsView - 與#parent.data不同,〜root在這種情況下不起作用
<!DOCTYPE html>
<html>
<head>
<title></title>
<script src="js/jquery-1.9.1.min.js" type="text/javascript"></script>
<script src="js/jsrender.js" type="text/javascript"></script>
<script src="js/jquery.observable.js" type="text/javascript"></script>
<script src="js/jquery.views.js" type="text/javascript"></script>
<script id="test1Template" type="text/x-jsrender">
<div>{^{>title}}{{:content}}</div>
{{test2}}
<h1>{^{>#parent.data.title}}</h1>
{{/test2}}
</script>
<script id="myTemplate" type="text/x-jsrender">
{^{test1 title='Test Title 1'}}
{^{test1 title='Test Title 2'}}
{{/test1}}
{{/test1}}
</script>
<script type="text/javascript">
$.views.tags({
test1: function() {
this.tagCtx.props.content = this.tagCtx.render();
return $.templates.test1.render(this.tagCtx.props, undefined, this.tagCtx.view);
},
test2: function() {
return this.tagCtx.render();
}
});
$.templates({myTemplate: "#myTemplate",
test1: "#test1Template"
});
$(function() {
$.link.myTemplate('#container', {});
$('#editTitle').click(function() {
$.observable($.view('#container > div:first').data).setProperty('title', prompt());
});
});
</script>
</head>
<body>
<span id="editTitle">EditTitle</span>
<div id="container"></div>
</body>
</html>
我想'〜根'是模板的根源。有沒有計劃指定一個變量,它是模板渲染的根數據。爲了清楚起見,我想訪問模板的渲染數據。這裏是'this.tagCtx.props'。我希望它與每個模板成比例,並且我想避免出現錯誤的「父」參考。例如,在選擇'#parent.parent.data'或'#parent.parent.parent.data'之間。我在我的模板中多次使用這種根數據。謝謝。 – 2013-04-27 06:07:53
再次感謝。除了你的解決方案,我嘗試在'{{include〜mydata =#data}}'標籤中包裝我的模板,它的工作原理。但你的解決方案更清潔。 – 2013-04-29 11:21:21