1
我想知道如何在路由器中創建一個模型,其中的屬性取自控制器的「needs」功能所提供的依賴項。我使用的是ember-1.0.0-rc.3。使用「needs」創建需要對象作爲屬性的router路由器
這裏是我的應用程序是如何現在看起來,有點簡單:
App.LeagueAddMatchRoute = Ember.Route.extend({
model: function (params) {
var match = App.Match.createRecord({});
return match;
},
setupController: function (controller) {
controller.set('players', App.Player.find());
}
});
App.LeagueAddMatchController = Ember.ObjectController.extend({
needs: "league",
save: function() {
this.get('model').get('transaction').commit();
return this.transitionToRoute('leagues');
}
});
App.Router.map(function() {
this.resource('leagues', function() {
this.resource('league', { path: ':league_id' }, function() {
this.route('addMatch');
})
});
});
App.LeaguesRoute = Ember.Route.extend({
model: function() {
return App.League.find();
}
});
App.League = DS.Model.extend({
name: DS.attr('string'),
matches: DS.hasMany('App.Match')
});
App.Match = DS.Model.extend({
league: DS.belongsTo('App.League'),
p1: DS.belongsTo('App.Player', {inverse: 'p1matches'}),
p2: DS.belongsTo('App.Player', {inverse: 'p2matches'}),
p1Score: DS.attr('number'),
p2Score: DS.attr('number')
});
這是我想做到:
App.LeagueAddMatchRoute = Ember.Route.extend({
model: function (params) {
var match = App.Match.createRecord({league: controller.league });
return match;
},
setupController: function (controller) {
controller.set('players', App.Player.find());
}
});
我嘗試了這樣的: VAR匹配= App.Match.createRecord({聯盟:this.controllerFor( 「聯盟」)}); 但是當我嘗試打開路由時出現錯誤,說: 屬性必須是數字,字符串或布爾值,而不是 –
andersem
編輯我的答案,你可以再試一次嗎? – intuitivepixel
謝謝,但仍無法正常工作,它說: 只能添加App.League的記錄這種關係 當我嘗試將其更改爲: match.set(「聯盟」,this.controllerFor(」 。聯盟「)獲得( '模型')); 我再次得到這個錯誤: 未捕獲的錯誤:斷言失敗:屬性必須是數字,字符串或布爾值,而不是 –
andersem