ember.js控制器属性

时间:2013-04-13 09:18:45

标签: ember.js

我正在尝试设置控制器的属性

尝试这样做

{{view Ember.Select contentBinding="App.tastingsController.names"}} 

它不起作用

App.tastingsController = Ember.ArrayController.extend
  names: ["Velato", "Abbastanza limpido", "Limpido", "Cristallino", "Brillante"]

虽然此版本正常运行(但会发出此警告:WARNING: The immediate parent route did not render into the main outlet and the default 'into' option may not be expected

App.tastingsController.names = ["Velato", "Abbastanza limpido", "Limpido", "Cristallino", "Brillante"]

这是我的路线:

App.Router.map ->
  @route "home", { path: "/" }
  @route "about"
  @resource "tastings", ->
    @route "new"
    @resource "tasting", { path: ":tasting_id"}

你能解释一下为什么吗?

(找到它here

谢谢

1 个答案:

答案 0 :(得分:0)

您的代码存在一些问题:

  • App.tastingsController应命名为App.TastingsController。控制器类应以大写字母开头。

  • 您收到警告是因为您在路径层次结构中跳过了模板。我需要更多关于路线的信息来帮助解决这个问题。

  • 如果您需要在控制器上设置属性(例如您的names),有两种方法可以执行此操作:

    将其设置在路线中:

    App.TastingsRoute = Ember.Route.extend({
      setupController: function(controller, model) {
        controller.set('names', names: ['list', 'of', 'names']);
      }
    });
    

    或者您可以在定义控制器类时直接设置它:

    App.TastingsController = Ember.ArrayController.extend({
      content: [],
      names: ['list', 'of', 'names']
    });
    
  • 当您需要从视图/模板引用控制器时,请不要命名整个控制器类。只需使用要绑定的属性(假设您的视图的控制器为App.TastingsController

{{view Ember.Select contentBinding="names"}}

希望这有帮助。