将模型彼此绑定,或获取同步的计算属性

时间:2014-01-07 16:39:53

标签: javascript angularjs

有时模型抽象是不够的,你觉得需要保持两个不同的模型同步。

例如,我有两个由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"
}]

因此,为了将视图干净地连接到某些控制器,我需要控制器反映同一更高级别模型的某种数据视图。或者我需要两个可以在它们之间保持同步的模型。

这也被称为在同一模型中具有计算属性,但建议的解决方案通常是使用一个函数,它不会对由返回的数据提供双向绑定。功能

这里所需要的功能与过滤器的功能相同,即保持某些数据的转换版本与原始数据同步。

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

我将用来解决我的问题的解决方案没有回答这个问题,但我把它作为一个快速而肮脏的问题解决方案的参考。

我使用$scope.$watch中包含的函数计算我的模型的不同版本,并在那里添加事件处理程序以便正确更新模型。

这里的现场演示,从ui可排序演示http://codepen.io/danse/pen/xlptu

分叉

这是来自同事http://codepen.io/danse/pen/ovGkq

的更好的版本

这是有效的,但根据我的说法,这很丑陋,它打破了双向视角的角度的整体想法