帮助程序绑定不更新

时间:2015-03-18 10:59:17

标签: ember.js ember-data

我有一个这样的帮手:

import Ember from 'ember';

export function bootstrapModelStatus(model) {
    if(model.get('isDeleted')) {return 'danger'};
    if(model.get('isError')) { return 'danger'};
    if(!model.get('isValid')) { return 'warning'};
    if(model.get('isSaving')) { return 'info'};
    if(model.get('isNew')) { return 'default'};
    if(model.get('isDirty')) { return 'warning'};
    if(model.get('isLoaded')) { return 'success'};
    return 'error';
}

export default Ember.Handlebars.makeBoundHelper(bootstrapModelStatus);

它与DS.Model绑定如下:

{{bootstrap-model-status model}}

问题是当模型状态发生变化时,上述内容不会更新。相反,我不得不做一些黑客攻击。

{{bootstrap-model-status model model.currentState.stateName}}

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

当您传入的模型的属性发生变化时,您可以告诉助手重新显示 - 请参阅here

在您的情况下,这意味着以下内容:

import Ember from 'ember';

export function bootstrapModelStatus(model) {
  if(model.get('isDeleted')) {return 'danger'};
  if(model.get('isError')) { return 'danger'};
  if(!model.get('isValid')) { return 'warning'};
  if(model.get('isSaving')) { return 'info'};
  if(model.get('isNew')) { return 'default'};
  if(model.get('isDirty')) { return 'warning'};
  if(model.get('isLoaded')) { return 'success'};
  return 'error';
}

export default Ember.Handlebars.makeBoundHelper(bootstrapModelStatus, 
  'isDeleted', 'isError', 'isValid', 'isSaving', 'isNew', 'isDirty',   'isLoaded'
);