Javascript Emberjs:数字输入之间的双向数据绑定
我正在研究Ember中的数据绑定,我想绑定两个Javascript Emberjs:数字输入之间的双向数据绑定,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,我正在研究Ember中的数据绑定,我想绑定两个input type=“number”元素,以便更改其中一个元素将更新另一个元素 我想要的是: Biker = DS.Model.extend( bikes: (-> @get("tires") / 2 ).property("tires") tires: (-> @get("bikes") * 2 ).property("bikes") ) 但这将导致以下堆栈溢出: 未捕
input type=“number”
元素,以便更改其中一个元素将更新另一个元素
我想要的是:
Biker = DS.Model.extend(
bikes: (->
@get("tires") / 2
).property("tires")
tires: (->
@get("bikes") * 2
).property("bikes")
)
但这将导致以下堆栈溢出:
未捕获范围错误:超过了最大调用堆栈大小。js:1
Ember.assert Ember.js:1获取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
使用输入
元素实现双向绝对数据绑定的最佳方法是什么
注意:.不要编写循环代码,只使用其中一个属性来监视另一个属性。允许您为此目的定义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')
})
你没有调用模型,你只是将模型设置为一个随机的对象数组。相反,设置并在model方法中返回this.store.find('biker')。无论如何,我认为这不会改变模板中显示的属性,因为每个
输入上的valueBinding
绑定到控制器的content
属性,而不是路由的模型。最好在控制器上设置计算属性,并对模型中的自行车
和轮胎
使用DS.attr('number')。。我在上面的评论中所说的部分内容是不必要的,但答案是一样的。如果你想让我解释JS Bin的任何部分,请告诉我。