2014-02-20 2 views
2

Итак, в основном у меня два контроллера. У одного из них есть действие, которое я хотел бы иметь возможность вызвать из действия в другом контроллере. Я пытался что-то вроде этого:EmberJS: Вызов от дочернего контроллера

Контроллеры:

Demoapp.FooController = Ember.ObjectController.extend({ 
    needs: ['bar'], 
    actions: { 
     fooControllerAction: function() { 
      var foo = this.get('controllers.foo'); 
      foo.set('sendMsg', true); 
     } 
    }  
}); 

Demoapp.BarController = Ember.ObjectController.extend({ 
    sendMsg: false, 
    actions: { 
     barControllerMsg: function() { 
      console.log("Message from Bar controller"); 
     }.observes('sendMsg') 
    }  
}); 

Шаблон:

<h1>Foo Template</h1> 

<button type="submit" {{action 'fooControllerAction'}}>Call barControllerMsg</button> 

И это не получилось ... Я не совсем уверен, как идти об этом, может кто-то предложить некоторые советы? Другое решение, которое я нашел, связано с наличием логики в шаблоне, и я бы предпочел избежать этого.

+1

Я не думаю, что функция наблюдателя должна находиться в 'actions' хэша – chopper

+0

Правильно, теперь он работает. Благодаря! – Natalia

+0

Отлично! Я дал ему ответ. Пожалуйста, примите это, чтобы вопрос не появился как без ответа. – chopper

ответ

0

Возьми наблюдатель из actions хэша

Demoapp.BarController = Ember.ObjectController.extend({ 
    sendMsg: false, 
    barControllerMsg: function() { 
     console.log("Message from Bar controller"); 
    }.observes('sendMsg') 
}); 
Смежные вопросы