-2
A
回答
1
命名空间插件可能是最好的解决方案,如果你需要有多个混合的视图模型。
虽然典型的答案是将主视图模型与子视图模型关联并绑定到主视图模型。如:
var viewModel = {
body: {
click: function() { alert("body"); }
},
div: {
click: function() { alert("body"); }
}
};
ko.applyBindings(viewModel);
现在,您必须将点击次数绑定到body.click和div.click。
一个典型的模式是做这样的事情:
var viewModel = {
body: ko.observable(),
div: ko.observable()
};
现在,你可以使用模板绑定,这将不会呈现任何东西,如果观察的是零,并允许您直接指定click
代替div.click
,因为您将视图模型作为模板绑定的参数data
。然后,如果/当子视图模型被填充(可能通过AJAX),UI将更新。绑定会是这样的:
<div data-bind="template: { name: 'main', data: body, templateOptions: { div: div } }"></div>
<script id="main" type="text/html">
<button data-bind="click: click">body</button>
<div id="a" data-bind="template: { name: 'div', data: $item.div }"></div>
</script>
<script id="div" type="text/html">
<button data-bind="click: click">div</button>
</script>
的“格”视图模型传递到使用templateOptions表明你不会需要依靠其全球范围内的ViewModel嵌套模板(不需要访问视图模型。 div嵌套模板内)。
相关问题
- 1. KnockoutJS绑定和嵌套模板
- 2. 数据绑定与Knockoutjs嵌套的JSON
- 3. KnockoutJS嵌套的模板绑定
- 4. KnockoutJS IF绑定 - 保留DOM
- 5. KnockoutJS:嵌套ko.observableArray
- 6. KnockoutJS嵌套列表
- 7. 如何使用knockoutjs绑定嵌套的输入
- 8. 绑定不通过JSON在KnockoutJS加载嵌套模板工作
- 9. knockoutjs在嵌套的foreach绑定中传递参数
- 10. knockoutjs点击绑定不能在嵌套的foreach工作
- 11. 嵌套绑定WPF
- 12. KnockoutJS嵌套的foreach未定义
- 13. 嵌套用户控件绑定不适用于嵌套属性
- 14. 关于ractivejs绑定嵌套数组的一些问题
- 15. 绑定特定嵌套Datalist
- 16. 在knockoutjs中嵌套的observables
- 17. KnockoutJS可见结合嵌套
- 18. 如何knockoutjs嵌套模板
- 19. 在knockoutjs中嵌套组件
- 20. Knockout.js嵌套和选项绑定删除从DOM选择
- 21. 在嵌套的dom元素上敲出多个绑定
- 22. 如何将DOM元素绑定到KnockoutJS中的特定对象?
- 23. knockoutjs数据绑定基于指数
- 24. knockoutJS绑定编程基于模型值
- 25. 基于限制的knockoutjs值绑定
- 26. simple-html-dom嵌套
- 27. 嵌套的DOM XPath?
- 28. JAXB绑定嵌套元素
- 29. 绑定嵌套模型
- 30. Knockout嵌套控件绑定
好,谢谢,我将使用命名空间插件,否则我需要建立一个整体的VM对象 – Sxd
肯定。我主要试图表明,您可以将viewModel作为其他视图模型的容器使用,并且可以根据需要通过模板绑定来来回移动。名称空间插件是一个不错的选择。 –
@Sxd,例如:'{a:ko.observable(new vmA()),b:ko.observable(new vmB())}'那么你可以在其他地方定义vmA和vmB - 而不是我称之为'monolithic' – Tom