Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 更新数组中的对象时,EmberJS视图未更新_Ember.js_Handlebars.js - Fatal编程技术网

Ember.js 更新数组中的对象时,EmberJS视图未更新

Ember.js 更新数组中的对象时,EmberJS视图未更新,ember.js,handlebars.js,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

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

<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>
但是,当我更改对象数组的值时,我的视图没有改变。如果我将对象数组设置为null,模板将更新,并且不显示任何表。我不确定是什么破坏了视图更新的绑定

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


谢谢,

我太晚了,但迟做总比不做强。发生这种情况的原因是视图在值的更新可以传播到屏幕之前被渲染。执行类似以下代码的操作:

--模板


为什么不使用Ember.set更改对象的属性(
variance
)?尝试使用
Em.set(allnamignationdays.objectAt(0),'variance',75)
。谢谢@Microfed-Ember.set(allnamignationdays.objectAt(0),'variance',75);作品我不知道这套语法。还有一种类似的get语法,可以从数组中只获取1个对象,这与我在allNaminationDays=this.get('allNaminationDays');中所做的不同;。@Micofed还了解了为什么代码在控制器函数中工作,但在从操作激发时不工作?您可以通过
Array.get('firstObject')
this.get('allnamignationdays.firstObject'))或数组[0](
objectAt
实际执行相同操作)从Ember.Array获取第一个对象1.我对你的第二个问题没有把握。在我看来,如果从这些函数中的代码看,控制器的操作和控制器的函数/方法是相同的,所以我不能说任何事情。:)
update: function()
{
    console.log('Not Working');
    allnominationdays = this.get('allnominationdays');
    //this.set('allnominationdays',null);

    allnominationdays.objectAt(0).variance = 75;
    this.set('allnominationdays',allnominationdays);
},
    {{#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);
            });