使用新的EmberJS路由器组织视图和控制器

时间:2013-01-05 10:45:06

标签: view controller ember.js router

我想在包/文件夹中组织我的视图以避免长列表。使用(伟大的)新路由器,默认情况下会提供一个视图,我们可以通过创建一个带有约定名称的新视图来更改。例如:

match('/').to('home');

的用途:

  • “home”车把模板
  • App.HomeView
  • App.HomeController

现在我想使用:

  • “my_package / home”车把模板(有效)
  • App.MyPackage.HomeView
  • App.MyPackage.HomeController

当我使用gem“ember-rails”(GIT版本)和生成器时:

rails g ember:view my_package/home

我明白了:

DemoEmberRails.MyPackage::HomeView = Ember.View.extend({
});

这不是一个正确的javascript代码(似乎是ruby代码的摘录)。

我试过了:

DemoEmberRails.MyPackage = {};
DemoEmberRails.MyPackage.HomeView = Ember.View.extend({
});

但它没有被路由器使用。

怎么做?

3 个答案:

答案 0 :(得分:0)

我认为你应该使用Ember.Namespace对它们进行命名空间。我仍然不确定路由器是否会自动搜索名称空间,但它可能?

http://emberjs.com/api/classes/Ember.Namespace.html

答案 1 :(得分:0)

正如你所说

match('/').to('home');

预计AppName.HomeRouteAppName.HomeViewAppName.HomeController。因此,如果您的模板包含data-template-name="home"且视图类似于

AppName.HomeView = Ember.View.extend({
  teplateName: 'home'
});

然后,ember会自动将/路线与此视图连接。

新的ember routing guides在这里非常有帮助。

答案 2 :(得分:0)

看起来目前不支持此功能,但是,存在添加此功能的拉取请求。

请参阅:  https://github.com/emberjs/ember.js/pull/1679