簡體   English   中英

ember.js 中的變量控制器

[英]Variable controller in ember.js

我對使用 Ember.js 很陌生,這讓我很困惑。 在 ember.js 中路由時有沒有辦法使用變量控制器?

我會試着解釋一下:

我有一個我需要由不同控制器控制並由不同模板表示的模型列表。 例如:如果我有路線items/:item_id ,我想做這樣的事情:

App.ItemRoute = Ember.Route.extend({
    model: function(params) {
        return items[params.lesson_id]; // edit: should be item_id not lesson_id
    },

    setupController: function(controller, model) {
        controller.set("model", model);
    },

    renderTemplate: function(controller, model) {
        this.render(model.template || "item", {
            controller: model.controller || "ItemController"
        });
    }
});

這里的 ember 指南: http : this.render顯示this.render與控制器選項的使用,但是當我傳入任何東西(甚至是"ItemController" )時,我收到這個錯誤:

Error while loading route: Error: You passed controller: 'ItemController' into the render method, but no such controller could be found.

有一個更好的方法嗎?

您應該使用控制器名稱item ,而不是ItemController並且必須定義App.ItemController

App.ItemRoute = Ember.Route.extend({
    model: function(params) {
        return items[params.lesson_id];
    },

    setupController: function(controller, model) {
        controller.set("model", model);
    },

    renderTemplate: function(controller, model) {
        this.render(model.template || "item", {
            controller: model.controller || "item"
        });
    }
});

使用this.controllerFor('item')為模板指定一個特定的控制器,您必須定義該控制器。

暫無
暫無

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

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