我有一个这样的帮手:
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}}
有更好的方法吗?
答案 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'
);