计算数组属性未在dom中更新

时间:2017-12-09 07:17:14

标签: arrays ember.js properties

我是ember js的新手。我们使用的版本是1.13.x,我已经面对这个问题一个多星期了。我有一个计算数组属性otherCurrencies。此属性用于填充屏幕上的一组复选框。此复选框组件在dom上呈现为视图,其值根据下拉列表中客户的选择进行切换。现在,如果我使用函数编写在控制器中分配otherCurrencies值的整个逻辑,它可以正常工作。根据客户A,将一组货币分配给otherCurrencies数组,并预先选择相应的复选框,类似地,对于客户B,预先选择了一组不同的货币。

但是一旦我将这个赋值的逻辑移动到一个计算属性,我就可以看到计算属性被调用,逻辑返回正确的货币值集,如我在全场使用的控制台记录器所示代码,但DOM没有得到更新,因为即使otherCurrencies数组包含值,复选框也没有预先填充。

我已经在网上狩猎了好几天,尝试过很多东西,但似乎根本没有用。我要求你提供一些关于这个问题的建议......提前谢谢

由于公司版权问题,我可能无法发布所有代码...但我想在这里发布最重要的内容,我再次道歉...希望这有帮助并请求您提供帮助

Computed property code in the model -

otherCurrencies : Em.computed('isExistingÇustomer', function(){
    if(this.get('ísExistingCustomer') && this.get('selectedCustomerNo')){ 
        var existingCurrencyDetails = this.get('arrayOfCurrencyDetails').findBy('çustomerNumber', this.get('selectedCustomerNo')); if(existingCurrencyDetails){ 
            return existingCurrencyDetails.existingCurrencies 
        } 
    return [];
});

hbs文件中的复选框使用视图显示 - 模板中的代码 -

{{view ='xxx'options = availableCurrencies value = otherCurrencies model = model}}

Code inside the view which displays the values -

rows: function(){ 
    var value = this.getWithDefault(‘value’);
    this.get(‘content’).clear(); 
    this.get(óptions’).forEach(function(item)){
        if(item){
            var object = Em.object.create({ 
            code : item.code, 
            value : item.value, 
            selected : value.indexOf(item.code) != -1 ? true : false 
            }); 
        this.get(‘content’).pushObject(object); 
        } 
    }); 
    return this.get('content'); 
}.property('options.@each.code')

我可以看到在使用计算属性逻辑时根本不会调用此行函数,因此不会预先填充值。

谢谢和问候,Rahul

0 个答案:

没有答案