将计算属性的行为与异步 Ember 模型混淆
Confusing behavior from computed properties with async Ember models
我 运行 尝试将计算属性构建到我的 Ember 数据模型中的一些 st运行ge 行为。这是我的 .coffee
文件的样子:
LineItemModel = DS.Model.extend
quantity: attr 'number'
length: attr 'number'
product: DS.belongsTo 'product', async: true
priceAdjust: attr 'number', defaultValue: 0
weight: (->
return this.get('product.weight') * length
).property('product')
# Get MLF price
price: (->
# Adjust if percentage is specified
adjust = (mlf, adjustment) ->
return mlf unless adjustment
mlf += Math.ceil(mlf * adjustment / 100)
prices = this.get('product').get 'prices'
level = this.get('quote').get 'level'
price = prices.filterBy 'level', level
return if price[0] then adjust( price[0], this.get('priceAdjust') ) else 0
).property('product', 'product.@each.prices', 'quote.level', 'priceAdjust')
我的问题是在我的 weight
方法中 this.get('product.weight')
总是 returns 未定义。我做了一些测试,除了 this.get('product.id')
returns 未定义。更令人困惑的是,这个有效
Ember.computed.alias('product.weight')
这来自 price
方法
# Get MLF price
price: (->
console.log this.get('product.weight')
...
这是供参考的产品型号:
ProductModel = DS.Model.extend
...
weight: attr 'number'
prices: DS.hasMany 'price', async: true
我不确定我是不是做错了什么或者这是一个错误。这是一个 CLI 应用 v0.1.15
据我所知,问题与 promise 是否已解决有关。这是我到目前为止的想法:
weight: Ember.computed.alias 'product.weight'
Computed属性轻松搞定promise关系业务
# Lbs / Ft
lbs: (->
return this.get('weight') * this.get('length')
).property('weight', 'length')
现在我知道我有一些重量值,我可以用它来计算。我仍然不确定为什么我在 price
方法中似乎不需要这个,但这似乎是 "Ember" 做事的方式。如果可以改进,我希望得到一些反馈。
我 运行 尝试将计算属性构建到我的 Ember 数据模型中的一些 st运行ge 行为。这是我的 .coffee
文件的样子:
LineItemModel = DS.Model.extend
quantity: attr 'number'
length: attr 'number'
product: DS.belongsTo 'product', async: true
priceAdjust: attr 'number', defaultValue: 0
weight: (->
return this.get('product.weight') * length
).property('product')
# Get MLF price
price: (->
# Adjust if percentage is specified
adjust = (mlf, adjustment) ->
return mlf unless adjustment
mlf += Math.ceil(mlf * adjustment / 100)
prices = this.get('product').get 'prices'
level = this.get('quote').get 'level'
price = prices.filterBy 'level', level
return if price[0] then adjust( price[0], this.get('priceAdjust') ) else 0
).property('product', 'product.@each.prices', 'quote.level', 'priceAdjust')
我的问题是在我的 weight
方法中 this.get('product.weight')
总是 returns 未定义。我做了一些测试,除了 this.get('product.id')
returns 未定义。更令人困惑的是,这个有效
Ember.computed.alias('product.weight')
这来自 price
方法
# Get MLF price
price: (->
console.log this.get('product.weight')
...
这是供参考的产品型号:
ProductModel = DS.Model.extend
...
weight: attr 'number'
prices: DS.hasMany 'price', async: true
我不确定我是不是做错了什么或者这是一个错误。这是一个 CLI 应用 v0.1.15
据我所知,问题与 promise 是否已解决有关。这是我到目前为止的想法:
weight: Ember.computed.alias 'product.weight'
Computed属性轻松搞定promise关系业务
# Lbs / Ft
lbs: (->
return this.get('weight') * this.get('length')
).property('weight', 'length')
现在我知道我有一些重量值,我可以用它来计算。我仍然不确定为什么我在 price
方法中似乎不需要这个,但这似乎是 "Ember" 做事的方式。如果可以改进,我希望得到一些反馈。