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

我正在尝试在按下按钮时在运行时更改模板的模型。 要更改名为“example”的模板模型,请在按下按钮时调用changeModel操作。 此方法发出Ajax请求并从后端获取一些数据。 现在的问题是应用程序转换到示例模板,但新数据不会显示在模板中。 我validation了数据是从服务器发送的。 当我将完全相同的数据放入变量并尝试将其作为模型加载时,它可以工作。 可能是什么问题? 问题是因为在转换到新页面之前没有解决Ajax请求而我需要以某种方式使用promise吗? 或者发送的数据的数据类型是否不同? 如果是这样,我该如何将其转换为数组。 这个问题与我几天前回答的另一个问题有关: 渲染模板并在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); }); } 

变量’newModel’接缝成为一种承诺。

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

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

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