2013-06-28 39 views
1

我正在创建一个新的Ember.Model与来自ajax调用的返回响应。什么是添加新的对象到一个Ember模型阵列(余烬模型)的正确方法

这是AJAX方法我有在控制器

createImageResource: function() { 
    var self = this, 
     fd = new FormData(), 
     newResource = {}, 
     resources = self.get('controllers.resources.model'), 
     fileName = this.get('resource_image').name, 
     fileSize = this.get('resource_image').size, 
     fileType = this.get('resource_image').type; 

    fd.append('resource[resource_type]', 'image'); 
    fd.append('resource[resource_name]', this.get('resource_name')); 
    fd.append('resource[source_id]', this.get('source_id')); 
    fd.append('resource_image[resource_image]', this.get('resource_image')); 

    fd.append('resource[resource_file_name]', fileName); 
    fd.append('resource[resource_file_type]', fileType); 
    fd.append('resource[resource_file_size]', fileSize); 

    this.set('isProcessingResource', true); 

    $.ajax({ 
    url: '/resources', 
    method: 'POST', 
    dataType: 'json', 
    processData: false, 
    contentType: false, 
    data: fd, 
    }).then(function(newResourceData) { 
    newResource = Msmapp.Resource.create(newResourceData.resource); 
    resources.pushObject(newResource); 
    self.set('isProcessingResource', false); 
    self.transitionToRoute('resource', newResource); 
    }); 
}, 

这增加了新的资源到由资源控制器使用的对象的阵列。它像它应该把它放入DOM中。我所拥有的每个对象都是个人资源的链接。页面加载时存在的所有对象都可以正常工作。添加到列表中的对象具有正确的url和所有内容,当您尝试导航时,它不会执行任何操作。

我不确定在.then()中是否还有其他需要做的事情?

这是模板

<section class="column_list"> 
    <ul> 
     {{#each resource in controller }} 
      <li class="item"> 
       {{#if resource.isLoading }} 
        {{spinner}} 
       {{else}} 
        {{#linkTo 'resource' resource }} 
         <img {{bindAttr src='resource.listAvatar'}} /> 
         <div class='title'>{{ resource.resource_name }}</div> 
        {{/linkTo}} 
       {{/if}} 
      </li> 
     {{/each}} 
    </ul> 
</section> 

回答

1

既然你加入resources,这就是你应得遍历 - {{#each resource in resources }}

要么或直接推到你的ArrayController实例 - this. resources.pushObject(newResource);

+0

这不是我在上面的代码中做什么? – CoderStash

+0

错误哎呀,修复了我的答案 – gunn

相关问题