Ember.js 关于滤波器的解析
我有一个过滤器,我不能让它解决承诺。它使用了一个名为“patient”的模型,它有许多“地址”,我想过滤掉地址类型为“Primary”的地址。过滤器似乎在工作,但只会返回一个承诺。提前谢谢你的帮助 病人控制员 解决方案(感谢@GJK)Ember.js 关于滤波器的解析,ember.js,ember-data,Ember.js,Ember Data,我有一个过滤器,我不能让它解决承诺。它使用了一个名为“patient”的模型,它有许多“地址”,我想过滤掉地址类型为“Primary”的地址。过滤器似乎在工作,但只会返回一个承诺。提前谢谢你的帮助 病人控制员 解决方案(感谢@GJK) 我能看到的最明显的问题是,您没有监视地址的@每个属性。您的属性取决于模型。@each.addresses,这意味着您的模型是一个数组,您正在观察该数组中每个项目的addresses属性。但是您没有观察地址数组的内容,只观察数组本身 在我看来,您应该使用model
我能看到的最明显的问题是,您没有监视地址的
@每个
属性。您的属性取决于模型。@each.addresses
,这意味着您的模型
是一个数组,您正在观察该数组中每个项目的addresses
属性。但是您没有观察地址
数组的内容,只观察数组本身
在我看来,您应该使用model.addresses.@each
作为从属属性。这将观察单个模型上的所有地址,包括观察地址
数组的内容(该数组在承诺解析时更新)
编辑:还有,我显然读得不够远。你不应该打电话给,然后
承诺。将其视为已解决,并在解决时进行更新。所以用这个来代替:
App.PatientController = Ember.ObjectController.extend
primaryAddress: Em.computed 'model.addresses.@each', ->
@get('model.addresses').filterBy 'addressType', 'Primary'
第一次完成此属性时,承诺将无法解析,因此筛选器不会返回任何内容。但是,当承诺解决时,属性将更新,过滤器将按照您的预期工作。谢谢。我改变了它,并得到了同样的承诺,但这对于为什么它需要改变是很有意义的。我注意到了另一个我以前没有看到的问题。我发布了一个应该可以用的更新。非常感谢。终于开始工作了。我不得不从阵列中取出第一个物体,但其他一切都要感谢你。我将为我的问题添加解决方案。
primaryAddress: Em.computed 'model.addresses.@each', ->
@get('model.addresses').filterBy('addressType', 'Primary').get('firstObject')
App.PatientController = Ember.ObjectController.extend
primaryAddress: Em.computed 'model.addresses.@each', ->
@get('model.addresses').filterBy 'addressType', 'Primary'