所以我有以下型號:如何傳遞DS.PromiseObject作爲鏈接助手中的模型?
var User = DS.Model.extend({
name: DS.attr('string'),
defaultRealm: DS.belongsTo('realm', { async: true })
});
var Realm = DS.Model.extend({
name: DS.attr('string')
});
我的路由器和路由的樣子:
App.Router.map(function() {
this.route('index', { path: '/:user_id' });
this.route('realm', { path: '/realms/:realm_id' });
});
App.UserRoute = Em.Route.extend(
model: function (params) {
return this.store.find('user', params.user_id);
},
setupController: function (controller, model) {
controller.set('model', model);
}
);
而且在我的索引模板,我有以下幾點:
{{#link-to 'realm' model.defaultRealm}}
Realm
{{/link-to}}
現在一切正常如預期的那樣,除了link-to
產生像/realms/<App.RealmModel:ember728:541ddd0f29909d0000b6d407>
的URL而不是/realms/541ddd0f29909d0000b6d407
。它看起來像是序列化模型的id
而不是序列化整個DS.Model
對象(因爲關係是異步的,所以defaultRealm
實際上是PromiseObject
)。這裏發生了什麼?
當前的解決辦法:
使用控制器上的觀察者,並在模板中使用realmId
。這真的有必要嗎?
App.IndexController = Em.ObjectController.extend({
realmId: null,
modelObserver: Em.observer('model', function() {
var self = this;
self.get('model.defaultRealm').then(function (realm) {
self.set('realmId', realm.get('id'));
});
});
});
版本:
ember#1.7.0
ember-data#1.0.0-beta.10
handlebars#1.3.0
我要去承擔鏈接到'realms'是筆誤,應該是鏈接到'realm' – Kingpin2k 2014-09-27 22:52:32
@ Kingpin2k是的,它應該是' realm'。修復。 – 2014-09-28 01:41:29