有时模型抽象是不够的,你觉得需要保持两个不同的模型同步。
例如,我有两个由angular sortable连接的列表,需要一个如下模型:
left = [{name:"one"}, {name:"two"}];
right = [{name:"three"}];
但我希望允许用户使用像复选框(angular input.checkbox
指令)实现的开关列表来配置它。这需要一个类似的模型:
elements = [{
name:"one",
position:"left"
}, {
name:"two",
position:"left"
}, {
name:"three",
position:"right"
}]
因此,为了将视图干净地连接到某些控制器,我需要控制器反映同一更高级别模型的某种数据视图。或者我需要两个可以在它们之间保持同步的模型。
这也被称为在同一模型中具有计算属性,但建议的解决方案通常是使用一个函数,它不会对由返回的数据提供双向绑定。功能
这里所需要的功能与过滤器的功能相同,即保持某些数据的转换版本与原始数据同步。
如何解决此问题?
答案 0 :(得分:0)
我将用来解决我的问题的解决方案没有回答这个问题,但我把它作为一个快速而肮脏的问题解决方案的参考。
我使用$scope.$watch
中包含的函数计算我的模型的不同版本,并在那里添加事件处理程序以便正确更新模型。
这里的现场演示,从ui可排序演示http://codepen.io/danse/pen/xlptu
分叉这是来自同事http://codepen.io/danse/pen/ovGkq
的更好的版本这是有效的,但根据我的说法,这很丑陋,它打破了双向视角的角度的整体想法