我正在尝试在按下按钮时在运行时更改模板的模型。要更改名为“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);
});
}
答案 0 :(得分:2)
变量'new Model'似乎是一个承诺。
试试这个:替换你的代码:
self.controllerFor('example').set('model', newModel);
带
newModel.then(
function(data) {
self.controllerFor('example').set('model', data);
});