与号中的相互依赖派生属性
Interdependent derived attributes in Ampersand?
我想创建一个向量的 Amp; 状态表示,该向量同时包含有关其极坐标和矩形表示的信息。
即我希望用户能够做到:
vector.angle = 90
vector.mag = 1
console.log vector.y #=> 1
-或-
vector.x = 0
vector.y = 1
console.log vector.angle #=> 90
谁能想到用 & 符号做到这一点的方法?
这是一个老问题,但有人可能需要这个。我马上就能想到一种方法来做到这一点。您需要使所有变量独立,然后侦听更改以更新其他值。因此,您需要定义模型变量props
angle
、mag
、x
、y
,然后将视图initialize
或其他地方的事件侦听器附加到每个变量。例如,对于angle
,您将执行以下操作:
model.on('change:angle', function(model) {
//first, calculate new x and y values. In your model you have a new angle value
if (NEW_CALCULATED_X_VALUE != model.x || NEW_CALCULATED_Y_VALUE != model.y) {
model.set({
x: NEW_CALCULATED_X_VALUE
}, {
silent: true//I'm not triggering the 'change' event yet to avoid circular dependencies.
});
model.set({
y: NEW_CALCULATED_Y_VALUE
}, {
silent: true
});
//now, once I've set all new values, I can trigger events.
model.trigger('change:x', model); //this will trigger model.on('change:x'), but since based on this change angle and mag won't change, no circular dependency will appear.
model.trigger('change:y', model);
}
})
并对四个变量中的每一个重复此操作(有优化的空间,但你明白我的想法。为了避免与此示例的循环依赖关系,您需要确保一旦使用任何 x 重新计算角度,您将获得相同的角度。
相关文章:
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- 为什么Airbnb风格指南说不鼓励依赖函数名称推断
- 将依赖外部库的UMD模块与browserfy捆绑在一起
- 如何将本地依赖项添加到npm项目中
- 如何在内联依赖项并将图像转换为dataURI的情况下完全提取网页
- jquery中的复选框依赖项
- 为什么react/redux前端项目在package.json中包含生产依赖项
- 单元测试依赖关系没有被嘲笑
- 依赖<选择>HTML和JavaScript菜单
- FRP 中 EventStreams 的循环依赖关系
- 节点模块依赖关系
- 派生进程的stdout在管道传输时工作异常
- 使用多个依赖项加载只进行一次AJAX调用
- 限制npm依赖模块's require(隔离)的用法
- AngularJS依赖注入定时问题
- 将循环中派生的值存储在javascript中
- 在Meteor中使用具有依赖关系的NPM包
- Dojo AMD加载程序执行定义具有空/缺失依赖项的回调
- 依赖于缓慢加载javascript的UI
- 与号中的相互依赖派生属性