我得到了以下WorkSpec项目控制器,它控制复选框状态:在灰烬pushObject呼吁应该回调,但的removeObject不
ContractorApp.WorkSpecController = Em.ObjectController.extend
needs: ['account']
selected: (->
work_spec = @get 'content'
work_specializations = @get 'controllers.account.work_specializations'
work_specializations.contains work_spec
).property()
selection_changed: (->
work_spec = @get 'content'
work_specializations = @get 'controllers.account.work_specializations'
limit = @get 'controllers.account.specialization_limit'
if @get('selected') && work_specializations.get('length') < limit
work_specializations.pushObject work_spec
else
work_specializations.removeObject work_spec
).observes('selected')
正如你看到work_specializations是工作专业化的母公司集: 我想控制(work_specializations.get('length')< limit)添加一个元素到数组中。
在这里,我在模型中得到了观察者的问题包含work_specializations阵列:
ContractorApp.ContractorProfile = DS.Model.extend
work_specializations: DS.hasMany "work_specialization"
on_spec_change: (->
ws_ids = @get('work_specializations').map (ws)->
ws.get 'id'
@set('work_specialization_ids', ws_ids)
).observes 'work_specializations'
出于某种原因,“work_specializations.pushObject work_spec”的号召调用模型的回调,但其对应的removeObject没有。任何想法为什么?
难道你不需要在调用'property'的时候声明'selected',尤其是'controllers.account.work_specialization'的依赖关系吗? – 2014-12-06 03:12:16
@torazaburo不,道具绑定到控件的(checkbo)状态。此外,无论何时选中或取消选中框,都会成功调用selection_changed。问题是为什么即使'work_specializations.removeObject work_spec'被称为模型上的属性观察者不是 – 2014-12-06 03:48:08