我遇到动态段路由器v2的问题。 这是js“http://jsfiddle.net/q9zvU/5/”的链接。
var App = Ember.Application.create();
App.deferReadiness();
App.ApplicationView = Ember.View.extend({
templateName: 'campaign-app'
})
App.Router.map(function(match) {
this.route('campaigns', {path: '/:type'})
})
App.CampaignsRoute = Ember.Route.extend({
model: function() {
alert('called model method');
var data;
$.ajax({
url: '/echo/json/',
async: false,
data: {
json: JSON.encode([{
name: 'Campaign 1',
type: 'scheduled'
}, {
name: 'Campaign 2',
type: 'scheduled'
}, {
name: 'Campaign 2',
type: 'draft'
}])
},
dataType: 'json',
success: function(json) {
alert(JSON.stringify(json));
data = json;
}
})
return data;
},
renderTemplate: function() {
this.render({outlet: 'campaigns'});
}
})
App.CampaignsView = Ember.CollectionView.extend({
itemViewClass: Ember.View.extend({
templateName: 'campaigns'
})
})
App.advanceReadiness();
路由的模型方法不是使用linkTo和transitionTo调用。 (在ember的文档中清楚地说明了这一点)。 但对于我的情况,我真的需要有一个点从路径中的ajax请求加载数据。
谢谢, 属
答案 0 :(得分:0)
模型钩子上的Ember文档:
“您可以实现将URL转换为模型的钩子 路线“。
因此,只需在页面刷新时调用模型钩子。但这让很多人感到困惑:-)。所以,在这种情况下,这不是正确的钩子。我认为你应该在这种情况下使用setupController钩子。试试这个:
App.CampaignsRoute = Ember.Route.extend({
setupController: function(controller) {
alert('called setupController method');
var data;
$.ajax({
url: '/echo/json/',
async: false,
data: {
json: JSON.encode([{
name: 'Campaign 1',
type: 'scheduled'
}, {
name: 'Campaign 2',
type: 'scheduled'
}, {
name: 'Campaign 2',
type: 'draft'
}])
},
dataType: 'json',
success: function(json) {
alert(JSON.stringify(json));
data = json;
}
});
controller.set("model",data);
}
});
一点额外的评论:您不将对象包装在Ember.Object中似乎很尴尬。通常你不使用普通的JS对象。