0

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

试图这样做

{{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"}

你能解释一下为什么吗?

(在这里找到)

谢谢你

马可

4

1 回答 1

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"}}

希望这可以帮助。

于 2013-04-13T15:58:31.847 回答