【问题标题】:Ember - specify controller for named outletEmber - 为命名插座指定控制器
【发布时间】:2014-09-08 15:33:25
【问题描述】:

我有一个名为 new 的模板,它有一些输入助手来提交新的请求(主题和正文)。在它们之后,我有一个命名的 outlet 标签,它应该显示我们可以添加到请求中的可能服务列表(标签:修复、购买等)。

问题是当我导航到新的时,标签模板只显示静态数据(将显示“内部标签模板”),但#each 根本不循环。

如果我将标签作为新资源添加到 new 中,并导航到 new/tags,那么标签模板将呈现到新模板的两个出口({{outlet}} 和 {{outlet tags}},所以我的代码在显示数据时没有错误,只是在我想要的位置和时间显示它时有错误(仅在新路线内)。

另外,我的两个路由模型都有一条 console.log 消息,说明访问了哪个路由,当我转到新路由时,只有新路由会显示一条消息。

我相信 new 不知道它应该使用标签控制器,但是当谈到 Ember 时我一无所知...(我不想通过新路由获取标签,我想使用标记路线)

export default Ember.Route.extend({
model: function(){
    console.log("in new");
},
setupController : function(controller, model){
    controller.set("model", model);
},

renderTemplate: function() {
    this.render();
    this.render('tags', {
        outlet: 'tagO',
        into: "new",
        controller: 'tags'
    });

}

});

【问题讨论】:

  • this guide中最后一个代码块之前的代码块中的示例使用controllerFor获取控制器的引用。你试过吗?另外,以防万一,如果您的控制器位于嵌套文件夹中,请尝试requests/tags
  • 两个文件在同一个文件夹,我已经试过controllerFor...
  • 我认为您将错误的参数传递给into.. 您传递的模板与您尝试插入的模板相同...我认为应该是定义插座tagO的模板的名称,我怀疑它会是request
  • 不,只有new和tags模板,tags应该渲染成new的{{outlet tag0}}

标签: ember.js


【解决方案1】:

从模板中输入{{render 'tags' someModel}} 比在renderTemplate 钩子和命名插座中以编程方式完成更容易。您需要使someModel 在您当前所在的控制器上可用。

您需要在控制器上连接多个模型,请参阅:EmberJS: How to load multiple models on the same route?

示例:http://emberjs.jsbin.com/OxIDiVU/1051/edit

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-21
    • 2020-01-13
    相关资源
    最近更新 更多