Emberjs 1.0.0-RC3:无法使用send来调用控制器方法

时间:2013-05-28 01:13:57

标签: ember.js handlebars.js

通常,我们可以使用以下命令从视图中访问控制器中声明的方法: this.get('controller')。send('method'); 。在这个简单的jsfiddle中,失败了:Uncaught TypeError:无法读取未定义的属性'send'。

以下是 jsfiddle 中的完整代码。

 App = Ember.Application.create();

 App.YesController = Ember.ArrayController.extend({

   cow: function(){
       console.log('say mooooo') ;
    }  
 });

 App.YesView = Ember.View.extend({
    templateName: 'yes',
   um:  function(){    
     this.get('controller').send('cow');
   }
});

整个视图:

<script type='text/x-handlebars' data-template-name='application'>
  {{render yes}}
  {{outlet}}
</script>

<script type='text/x-handlebars' data-template-name='yes'>
   <h1> Can't use send to call controller method from view</h1>
    <button {{action 'um' target='view.content'}}> can't call controller from view</button>

  <button {{action 'cow'}}> controller action works</button>
</script>

2 个答案:

答案 0 :(得分:2)

据我所知,可以在控制器中调用cow()方法,如下所示:

App.YesView = Ember.View.extend({
  templateName: 'yes',
  um: function() {
    this.get('controller').cow();
    //this.controller.cow() // <-- this should work also
  }
})

答案 1 :(得分:1)

尝试target=view而不是target=view.content,否则你试图在模型上调用send,这是未定义的。