我有一个过滤器,我无法解决它的承诺。它正在使用一个名为“患者”的模型,该模型具有多个“地址”,我想过滤掉地址类型为“主要”的地址。过滤器似乎正在工作,但只会返回一个承诺。提前感谢您的帮助。
App.PatientController = Ember.ObjectController.extend
primaryAddress: Em.computed 'model.@each.addresses', ->
@get('model.addresses').then (addresses)->
addresses.filterBy 'addressType', 'Primary'
primaryAddress: Em.computed 'model.addresses.@each', ->
@get('model.addresses').filterBy('addressType', 'Primary').get('firstObject')
答案 0 :(得分:1)
我能看到的最明显的问题是你没有看到地址的@each
属性。您的属性取决于model.@each.addresses
,这意味着您的model
是一个数组,并且您正在观察该数组中每个项目的addresses
属性。但是你没有观察addresses
数组的内容,只是数组本身。
在我看来,您应该使用model.addresses.@each
作为您的附属财产。这将观察单个模型上的所有地址,包括观察addresses
数组的内容(在promise解析时更新)。
then
。将其视为已经解决,并在解决后进行更新。所以请改用它:
App.PatientController = Ember.ObjectController.extend
primaryAddress: Em.computed 'model.addresses.@each', ->
@get('model.addresses').filterBy 'addressType', 'Primary'
第一次使用此属性时,承诺将无法解析,因此过滤器不会返回任何内容。但是当promise解决后,属性将更新,过滤器将按照您的预期运行。