簡體   English   中英

如何在Ember 2中訪問路線模型

[英]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.projectundefined本身:

> $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

因此,在這種情況下沒有錯誤。 模板中沒有任何內容,因為nullundefined呈現為空白字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM