[英]How to access a routes model in Ember 2
我無法在模板中訪問路線模型。 作為家庭控制器中定義的動作的一部分,我的模型已成功創建:
actions: {
createProject: function () {
var project = this.store.createRecord('project', {
name: 'Sample name'
});
var self = this;
var promise = project.save();
promise.then(function (response) {
self.transitionToRoute('estimate', project);
});
promise.catch(function (errors) {
console.log(errors);
});
}
}
該模型的uuid已正確地序列化為URL,其中router.js中的URL如下:
this.route('estimate');
this.route('estimate', { path: '/estimate/:project_id' });
我的estimate
控制器還正確指定了項目依賴項:
import Ember from 'ember';
export default Ember.Controller.extend({
needs: ['project']
});
...然后我在route / estimate.js中定義模型,如下所示:
import Ember from 'ember';
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';
export default Ember.Route.extend(AuthenticatedRouteMixin, {
// model: function(params) {
// return this.store.find('project', params.project_id);
// },
model(params) {
return this.store.findRecord('project', params.project_id);
}
});
記錄this.store.findRecord('project', params.project_id)
的輸出,我得到:
Class {__ember1458995391969: null, __ember_meta__: Meta}
__ember1458995391969
...
但是,當我嘗試在估算把手模板中訪問項目模型(使用{{model.project.name}}
)時,我什么也沒得到(沒有錯誤,沒有輸出)。
有人對此有任何想法嗎?
模型掛鈎的返回值綁定到控制器的model
屬性,該控制器以相同的名稱綁定到模板中。
您應該編寫{{model.name}}
而不是{{model.project.name}}
。
您的模型掛鈎直接返回了Ember Data Promise對象(這是正常的)。 這意味着model
引用了您的項目對象。 沒有model.project
屬性。
渲染{{model.project.name}}
就像在控制器中調用this.get('model.project.name')
。 余燼將返回undefined
此路徑,即使model.project
是undefined
本身:
> $E.get('model')
< Class {store: Class, isLoaded: true, manager: Class, isUpdating: false, __ember1459002119210: "ember610"…}
> $E.get('model.project')
< undefined
> $E.get('model.project.name')
< undefined
> $E.get('model.project.name.whatever')
< undefined
因此,在這種情況下沒有錯誤。 模板中沒有任何內容,因為null
和undefined
呈現為空白字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.