Ember:组件中的sendAction不起作用

Sco*_*hea 0 coffeescript ember.js

在一个组件中,我有一个返回主屏幕的按钮.当我点击它时sendAction似乎没有开火.我希望它将动作发送到路线动作:

routes.js.coffee:

App.AutomobileRoute = Ember.Route.extend(Ember.SimpleAuth.AuthenticatedRouteMixin,

  model: (params) ->
    @store.find('automobile', params.automobile_id)

  setupController: (controller, model) ->
    controller.set('content', model)
    @controllerFor('application').set('currentRoute', 'automobiles')

  actions:
    back: ->
      @transitionTo 'automobiles'
)
Run Code Online (Sandbox Code Playgroud)

零件:

backToAutomobiles: ->
  console.log 'Hit Back'
  response = @.sendAction 'back'
  console.log "Response: " + response
Run Code Online (Sandbox Code Playgroud)

模板:

<button type="button" class="btn btn-default" id='back' {{action 'backToAutomobiles' model}}>Back</button>
Run Code Online (Sandbox Code Playgroud)

我接到'点击'消息,但页面没有改变.说实话,这可能是这个问题的重复,我只是不能很好地回答这个问题.

完整模板:

<div class="panel-group" id="automobile-details">
  <div class="panel panel-default">
    <div class="panel-heading">
      <span class="spec-title">
        <h3 class="panel-title">
          <a data-toggle="collapse" data-parent="#automobile-details" href="#automobile-details-body">
            {{model.name}}
          </a>
        </h3>
      </span>
      &nbsp;
      <span>
        {{view Em.Select content=autoModels
                         optionValuePath="content.automobileId"
                         optionLabelPath="content.modelName"
                         selection=selectedModel
        }}
          {{model.status}}
      </span>
    </div>
    <div id="automobile-details-body" class="panel-collapse collapse">
      <div class="panel-body">
        {{#if model.isPending}}
          {{partial 'automobile/form'}}
          <div class="btn-toolbar" role="toolbar">
            <button type="button" id='cancel-header' class="btn btn-default" {{action 'cancel' model}}>Cancel</button>
            <button class="btn btn-primary" id='submit-header' {{action 'submit' model}}>Update</button>
          </div>
        {{else}}
          {{partial 'automobile/header'}}
        {{/if}}
      </div>
    </div>
  </div>
</div>

<hr/>

<h3>Attributes</h3>

{{partial 'automobile_attributes/automobile_attributes'}}

<div class="btn-toolbar" role="toolbar">
    <button type="button" class="btn btn-default" id='back' {{action 'backToAutomobiles' model}}>Back</button>
    {{#if model.isPending}}
        {{#link-to "automobile.new_group" class='btn btn-primary' id='add-group'}}New Group{{/link-to}}
        {{#link-to "automobile.publish" model.id class="btn btn-success" id='publish-auto'}}Publish{{/link-to}}
    {{/if}}
    {{#unless model.isPending}}
        <button type="button" id='new-model' class="btn btn-primary" {{action 'newModel' model}}>New Model</button>
    {{/unless}}
</div>
Run Code Online (Sandbox Code Playgroud)

Sco*_*hea 6

事实证明,我需要在调用组件的模板中注册操作.

cars.handlebars之前:

{{automobile-details model=content}}

{{outlet}}
Run Code Online (Sandbox Code Playgroud)

cars.handlebars后:

{{automobile-details model=content back='back'}}

{{outlet}}
Run Code Online (Sandbox Code Playgroud)