0

我有以下路由器:

Whistlr.OrganizationsNewRoute = Ember.Route.extend
  model: ->
    Whistlr.Organization.createRecord()
  setupController: (controller, model) ->
    @controllerFor('organization').set('content', model)

这在新的组织形式中被调用,该组织形式有几个带有绑定的输入,例如:

Em.TextField valueBinding="name"

当我将数据输入任何这些输入时,我会收到以下错误消息:

Cannot delegate set('name', C) to the 'content' property of object proxy <Whistlr.OrganizationsNewController:ember519>: its 'content' is undefined.

这告诉我控制器没有被路由器正确设置。为什么会这样?

4

2 回答 2

1

原因是您将模型设置为Whistlr.OrganizationsController,而controllerforWhistlr.OrganizationsNewRoute将是Whistlr.OrganizationsNewController其内容未设置,因为您已经覆盖了setupControllerof Whistlr.OrganizationsNewRoute

如果您希望将Whistlr.OrganizationsNewRouteWhistlr.OrganizationsController作为默认控制器,您可以通过

Whistlr.OrganizationsNewRoute = Ember.Route.extend({
        controllerName: 'organization'
});

这会将 设置Whistlr.OrganizationsController为您的默认控制器,Whistlr.OrganizationsController您可能不需要覆盖setupController也。但这仅在 master 中可用。

如果您使用的是 RC build <= 1.0.0.RC6,您必须renderTemplateWhistlr.OrganizationsNewRoute.

    Whistlr.OrganizationsNewRoute = Ember.Route.extend({
           setupController: function(controller,model) {
                 this.controllerFor('organization').set('content', model)
           },
           renderTemplate: function(){
                  this.render({ controller: 'organization' });
           }
    });
于 2013-07-31T06:52:01.513 回答
0

从模型挂钩返回的值将分配给模型属性。在 setupController 中,如果您不返回任何内容,模型将是未定义的。

模型:-> 返回 Whistlr.Organization.createRecord()

于 2013-07-31T04:13:35.163 回答