初衷
上一篇已经实现了数据的双向绑定,但model的控制范围是整个文档,在实际工程中必须要有作用范围,以便做ui模块的拆分。
这一篇,我们希望实现像angularjs一样的控制器继承:
1. 父controller的Model可以在子controller里被访问到
2. 子controller的model不影响父controller
3. controller继承关系在html中指定,而不是js中指定
目标
html里,用isi-controller属性去声明控制器:
<body>
<div isi-controller="ParentController">
<input data-bind="name">
<div isi-controller="SubController">
<input data-bind="name">
</div>
</div>
</body
希望上面的input name 改了,下面的会跟着变,而下面的变了,上面的不变。
js里,用和上面isi-controller属性值同名的函数定义控制器:
function ParentController() {
var model = new Model();
model.set(‘name‘, ‘parent‘);
}
function ParentController() {
var model = new Model();
model.set(‘name‘, ‘sub‘);
}
对用户来说,只要写这些,就完事儿了。
实现
时间: 2024-12-11 16:47:46