我有这个 Ajax 和 Ember.js 调用
$.ajax({
url: '../data',
type: 'GET',
cache: false,
dataType: 'json',
data: ({
func: "getAllLists"
}),
success: function(data) {
console.log('DEBUG: GET Data OK');
var list = [
{
uid: data[0].uid
}
];
App.ListRoute = Ember.Route.extend({
model: function () {
return list;
}
});
},
error: function() {
console.log('DEBUG: GET Data Failed');
}
});
这是谭
{{#each}}
<li>
{{#link-to 'project' this}}
{{title}}
{{/link-to}}
</li>
{{/each}}
我有一个错误:断言失败:#each 循环的值必须是一个数组。您通过了(生成的列表 Controller )
。我做错了什么?
最佳答案
您需要在 App.ListRoute
内执行 $.ajax()
调用,而不是相反:
App.ListRoute = Ember.Route.extend({
model: function () {
list = $.ajax({
url: '../data',
type: 'GET',
cache: false,
dataType: 'json',
data: ({
func: "getAllLists"
}),
}).then( function(data) {
console.log('DEBUG: GET Data OK');
var list = [{
uid: data[0].uid
}];
},);
return list;
}
});
请注意,在 ajax 调用完成之前,Ember 不会进入路由(因为它将等待 then()
解析。看看 http://emberjs.com/guides/routing/asynchronous-routing/
关于javascript - 使用 Ember.js 获取元素数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21798317/