更新阵列中的对象时,EmberJS视图未更新

时间:2014-11-12 22:12:58

标签: ember.js handlebars.js

我有一个把手模板,我有一张桌子。

<script type="text/x-handlebars" data-template-name="customers">
<table>

    <tbody>
    {{#each nomday in allnominationdays}}
    <tr class="nomdays" {{action "saveNomDay" nomday on="focusOut"}}>
      <td>{{nomday.confirmedVolume}}</td>
      <td>{{nomday.variance}}</td>  
    </tr>
    {{/each}}
    </tbody>

</table>
</script>

在我的控制器中,我有一个函数,我从tr上定义的动作saveNomDay调用。

update: function()
{
    console.log('Not Working');
    allnominationdays = this.get('allnominationdays');
    //this.set('allnominationdays',null);

    allnominationdays.objectAt(0).variance = 75;
    this.set('allnominationdays',allnominationdays);
},

但是当我更改对象数组的值时,我的视图没有改变。如果我将对象数组设置为null,则模板更新并且不显示任何表。我不确定是什么打破了更新视图的绑定?

代码块在控制器功能中更新视图,但在动作上调用时不更新。但是在操作设置中,对象数组为null,更新视图并删除整个表。不知道发生了什么。 EmberJS的新内容

谢谢,

1 个答案:

答案 0 :(得分:0)

我来不及但迟到总比没有好。发生这种情况是因为视图在值中的更新可以传播到屏幕之前呈现。执行以下代码:

- 模板

    {{#if isVisible}}
    <table>

    <tbody>
    {{#each nomday in allnominationdays}}
    <tr class="nomdays" {{action "saveNomDay" nomday on="focusOut"}}>
      <td>{{nomday.confirmedVolume}}</td>
      <td>{{nomday.variance}}</td>  
    </tr>
    {{/each}}
    </tbody>

</table>
{{/if}}

- 组件/控制器

self.set('isVisible',false);
var propgationPromise = new Promise(function(resolve, reject) {
            //update Value
            console.log("promise started");
            resolve();
            });
            propgationPromise.then(function(){
                console.log("promise stopped");     
                self.set('isVisible', true);
            });