我知道这不是一个长期使用的好方法,但是对于故障排除,有什么方法可以在绑定模板时传递一个简单的字符串然后在模板中作为变量访问它?例如,如果这是我的约束力:
<!-- ko template: { name: tmplOne }, myvar: 'apple' -->
这是 tmplOne :
<div>
<span>Fruit: </span>
<span data-bind="text: myvar"></span>
</div>
这会产生以下结果:
fruit: apple
即使我必须在名为“fruit”的viewmodel中声明一个observable,我可以手动将其设置为模板绑定吗?
答案 0 :(得分:6)
使用
<!-- ko template: { name: tmplOne, templateOptions: {myvar: 'apple'} } -->
更多信息:http://www.knockmeout.net/2011/03/quick-tip-reusing-template-by-passing.html
答案 1 :(得分:3)
您可以为模板绑定提供数据参数,并根据您的需要定义对象文字:
<!-- ko template: { name: tmplOne }, myvar: 'apple' -->
而是这样做:
<!-- ko template: { name: tmplOne, data: { myvar: 'apple' } } -->
答案 2 :(得分:1)
对于阅读更高版本的淘汰赛的人来说,这似乎是组件与模板的良好用法。
答案 3 :(得分:0)
通过为绑定的data
参数提供合成,您可以在保持当前应用的viemodel的同时将任意数据传递到模板。
例如,您可以将模板内容包装在with
绑定中,并绑定到组成的$data
属性,从而创建新的绑定上下文。这样,当前应用的绑定就不需要更新。
ko.applyBindings({
fruits: ['banana', 'orange']
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<div data-bind="template: { name: 'tmplOne', data: { myModelData: $data, myVar: 'apple' } }"></div>
<script type="text/html" id="tmplOne">
<!-- ko with: myModelData -->
<span>My model</span>
<ul data-bind="foreach: fruits">
<li data-bind="text: $data"></li>
</ul>
<div>
<span>My custom data:</span>
<span data-bind="text: $parent.myVar"></span>
</div>
<!-- /ko -->
</script>