[英]Emberjs: Two-Way Data-binding between Number Inputs
I am looking at data binding in Ember, and I want to bind two input type="number"
elements so that changing either of the elements will update the other element. 我正在寻找Ember中的数据绑定,我想绑定两个
input type="number"
元素,以便更改任何一个元素将更新另一个元素。 Here is the JSBin . 这是JSBin 。
What I would like to have is the following: 我想要的是以下内容:
Biker = DS.Model.extend(
bikes: (->
@get("tires") / 2
).property("tires")
tires: (->
@get("bikes") * 2
).property("bikes")
)
But that will result in the following stack overflow: 但这会导致以下堆栈溢出:
Uncaught RangeError: Maximum call stack size exceeded ember.js:1 Ember.assert ember.js:1 get ember.js:2167 Ember.Observable.Ember.Mixin.create.get ember.js:12425 (anonymous function) biker.js:32 ComputedPropertyPrototype.get ember.js:4951 get ember.js:2176 Ember.Observable.Ember.Mixin.create.get ember.js:12425 (anonymous function) biker.js:29 ComputedPropertyPrototype.get
未捕获RangeError:最大调用堆栈大小超出ember.js:1 Ember.assert ember.js:1 get ember.js:2167 Ember.Observable.Ember.Mixin.create.get ember.js:12425(匿名函数)biker.js :32 ComputedPropertyPrototype.get ember.js:4951 get ember.js:2176 Ember.Observable.Ember.Mixin.create.get ember.js:12425(匿名函数)biker.js:29 ComputedPropertyPrototype.get
What is the best way to achieve 2-way absolute data-binding with input
elements? 使用
input
元素实现双向绝对数据绑定的最佳方法是什么?
Note: I asked something similar, but about angular . 注意: 我问过类似的东西,但是有点角度 。
Instead of writing circular code, have just one of the properties watch the other. 而不是编写循环代码,只有一个属性观看另一个。 Ember's computed properties allow you to define setter and getter functions for this exact purpose:
Ember的计算属性允许您为此目的定义setter和getter函数:
App.Biker = DS.Model.extend({
bikes: DS.attr('number'),
tires: function(key, value) {
// Setter
// Says: if we did this.set('tires', something);
if (arguments.length > 1) {
var bikes = value != 0 ? value / 2 : 0; // Incase zero bikes
this.set('bikes', bikes);
}
// Getter
return this.get('bikes') * 2;
}.property('bikes')
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.