ember.js:如何使用generateController初始化 Controller

标签 ember.js ember-data

我需要将路由 categories 中的 View 和 Controller 插入到多个其他路由中,而不是将它们嵌套在该 categories 路由中(因为我想保持 URL 独立) .

因此,我使用我获取的 Controller 将 categories 模板渲染到主 application socket topbar 中我现有的categories路线。

App.PostRoute = Ember.Route.extend({
    renderTemplate: function() {
        this.render();
        this.render('categories', {
            outlet: 'topbar',
            into: 'application',
            controller: this.controllerFor('categories')
        });
    }
});

当我访问categories路线时,一切正常!我什至可以从那里浏览其他路线。但是,如果我首先访问任何其他路由,则似乎不会创建 categories Controller :

Assertion failed: The controller for route 'categories'' could not be found. Make sure that this route exists and has already been entered at least once. If you must intialize the controller without entering a route, use `generateController`.

很好的警告:)我希望所有框架都那么智能!所以我试图手动生成该 Controller ...但如何生成?

我尝试过:

App.CategoriesRoute.create().generateController('categories', App.Category)

和静态版本:

App.CategoriesRoute.generateController('categories', App.Category)

这似乎不是正确的做法。请问有什么帮助吗?

最佳答案

这与我们的 friend IntuitivePixel 一致。

App.PostRoute = Ember.Route.extend({
  renderTemplate: function() {
    this.render();

    //assigning the model...
    var context = ['a','b','c','d'];
    var instance = Em.generateController(this.get('container'),'categories',context);
    instance.set('content',context);

    this.render('categories', {
        outlet: 'topbar',
        into: 'application'
    });
  }
});

您可以在模型 Hook 本身中执行此操作。

关于ember.js:如何使用generateController初始化 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18310033/

相关文章:

ember.js - Ember数据仅填充 “id”属性

javascript - 在 Ember 数组中,我如何通过索引值访问对象? Ember

ember.js - 从其他 Controller 访问 Controller

Ember.js 计算属性过滤器 hasMany 数组

javascript - 如何重新加载具有链接 hasMany 关系的异步?

javascript - Ember Mirage - 无法捕获响应

validation - Ember-验证问题与 Ember CLI 和 Ember 数据

ember.js - 如何使用 FIXTURES 模拟缓慢的 REST 后端?

javascript - Ember Data Beta 2 - FixtureAdapter 的串行器/解串器

ember.js - 从另一个 View 访问 Ember ApplicationController