0

actionコントローラーから他のコントローラーのメソッドにアクセスする方法はありますか?

以下のようなことを試しまし@get('controllers.user').stopEditing()たが、うまくいかないようです。

user_edit_controller.js.coffee

App.UserEditController = Ember.ObjectController.extend
  needs: ['user']
  title_options: ["Mr", "Mrs", "Dr", "Miss", "Ms"]

  startEditing: ->
    user = @get 'model'
    transaction = user.get('store').transaction()
    transaction.add user
    @transaction = transaction

  stopEditing: ->
    transaction = @transaction
    if(@transaction)
      @transaction.rollback()
      @transaction = undefined

  actions:
    save: ->
      @transaction.commit()
      @transaction = undefined
      @get('controllers.user').stopEditing()

    cancel: ->
      @get('controllers.user').stopEditing()

user_controller.js.coffee

App.UserController = Ember.ObjectController.extend
  isEditing: false
  needs: ['userEdit']

  actions:
    startEditing: ->
      userEditController = @get 'controllers.userEdit'
      userEditController.set 'model', @get 'model'
      userEditController.startEditing()
      @set 'isEditing', true

    stopEditing: ->
      userEditController = @get 'controllers.userEdit'
      userEditController.stopEditing()
      @set 'isEditing', false

    destroyRecord: ->
      if window.confirm "Are you sure you want to delete this contact?"
        @get('model').deleteRecord()
        @get('store').commit()

        # return to the main contacts listing page
        @get('target.router').transitionTo 'users.index'
4

2 に答える 2

1

アクションをプログラムでトリガーするには、 を使用する必要がありますsend(actionName, args ...)

あなたの場合、次のように更新してください。

@get('controllers.user').send('stopEditing')
于 2013-11-10T18:17:56.230 に答える