javascript - 断言失败 : The value that #each loops over must be an Array. 你通过了 [object Object]

标签 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);
    });
 }

最佳答案

变量“newModel”似乎是一个 promise 。

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

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

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

关于javascript - 断言失败 : The value that #each loops over must be an Array. 你通过了 [object Object],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21691927/

相关文章:

javascript - 使用 Mixins 访问 Ember Controller

javascript - 如何通过 HTMLService (Google App Scripts) 将电子表格数据放入客户端数组

javascript - 让jquery使用min-height而不仅仅是高度

javascript - 尝试提取音频元数据Javascript

javascript - 将脚本渲染为 HTML 而不执行

javascript - 从表格中的段落中提取行

java - 如何从ajax请求中获取servlet中的参数?

ajax - 什么是渐进增强?

javascript - 通过 ajax 调用在 Flask 中渲染模板

javascript - 如何使用 javascript 获取小数点后两位而不四舍五入的数字?