通常,我们可以使用以下命令从视图中访问控制器中声明的方法: 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>
答案 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,这是未定义的。