断言失败:#each循环的值必须是一个数组。你传递了[object Object]

时间:2014-02-11 02:33:38

标签: javascript jquery ajax ember.js

我正在尝试在按下按钮时在运行时更改模板的模型。要更改名为“example”的模板模型,请在按下按钮时调用changeModel操作。此方法发出Ajax请求并从后端获取一些数据。现在的问题是应用程序转换到示例模板,但新数据不会显示在模板中。我验证了数据是从服务器发送的。当我将完全相同的数据放入变量并尝试将其作为模型加载时,它可以工作。可能是什么问题?问题是因为在转换到新页面之前没有解决Ajax请求而我需要以某种方式使用promise吗?或者发送的数据的数据类型是否不同?如果是这样,我该如何将其转换为数组。这个问题与我几天前提出的另一个问题有关:Rendering a template and invoking model hook in Ember.js。你可以看看我正在使用的代码。

changeModel: function(data) {
    var url = "/ChangeModel";
    var newModel= Ember.$.getJSON(url).then(function(data) {
      return data;
    });
    var self = this;
    this.transitionTo('example').then(function(){
        self.controllerFor('example').set('model', newModel);
    });
 }

1 个答案:

答案 0 :(得分:2)

变量'new Model'似乎是一个承诺。

试试这个:替换你的代码:

self.controllerFor('example').set('model', newModel);

newModel.then(
  function(data) {
    self.controllerFor('example').set('model', data);
});