Ember.js 在Ember中更新特定模型值的UI

Ember.js 在Ember中更新特定模型值的UI,ember.js,Ember.js,如何迭代每个模型值并基于该值更新把手UI。 我正在使用ArrayController。基本上,对于模型中的特定值,我希望更改其显示方式 我不确定上面的代码有什么错误。但它并没有按要求发挥作用 App.SomeStat = Ember.Object.extend({ target: null, starts: null } {{#each stat in controller}} {{#if isRestricted}} Do something.. {{/if

如何迭代每个模型值并基于该值更新把手UI。 我正在使用ArrayController。基本上,对于模型中的特定值,我希望更改其显示方式

我不确定上面的代码有什么错误。但它并没有按要求发挥作用

App.SomeStat = Ember.Object.extend({
   target: null,
   starts: null
}

 {{#each stat in controller}}
     {{#if isRestricted}} Do something..
     {{/if}}
 {{/each}}

App.SomestatController = Ember.ArrayController.extend({

isRestricted: function () {
        this.forEach(function(target) {
            var t= target.get('target');
            return t >= MAGIC_NUMBER;
        });
    }.property('model.@each.target'),
});
试试这个:

App.CensusStat = Ember.Object.extend({
   targetPc: null,
   starts: null,
isRestricted: function () {

            var offTarget = this.get('targetPc');
            return (offTarget &&
                (Math.abs(offTarget) >=
                    Ember.I18n.t('ps.label.census.offtarget.restricted.percentage')));

    }.property('targetPc')
});

您应该将ArrayController
itemController
属性设置为ObjectController,该属性扩展每个数组内容的内容

App.ExtendIndexController = Ember.ObjectController.extend({

  isRestricted: Em.computed(function () {
     return this.get('name') === 'red';
  }).property('name')


});

App.IndexController = Ember.ArrayController.extend({
  itemController: 'extendIndex'
});
然后,您可以在迭代
控制器时访问模板中添加的属性:

 {{#each controller}}

    <li>{{name}} ({{isRestricted}})</li>

 {{/each}}
{{#每个控制器}
  • {{name}}({{isRestricted}})
  • {{/每个}}


    此案例记录在中,但我认为,此特定案例也应记录。

    isRestricted应记录在controller中,我不想将其放在模型中。这很好,这很容易,但很难理解