1

似乎当我在 Ember.js 中使用新的路由功能时,视图上定义的属性和操作处理程序无法从其模板访问。相反,只有控制器的属性可用,应用程序会在路由器中查找操作处理程序。

这是问题的一个例子:http: //jsfiddle.net/InMatrix/wtUML/3/

如果您单击我的个人资料 ---> 照片 ---> 测试,您将在控制台中收到此错误:

无法响应状态 root.profile.photos 中的事件 testButton。

显然,在 App.PhotosView 中定义的以下操作处理程序对事件不可用。

App.PhotosView = Em.View.extend({
    templateName: 'photos',
    testButton: function(){
        alert('test Button');                
    }
});

有没有办法可以将我的动作处理程序保留在相关的视图类中?我错过了什么吗?

4

2 回答 2

3

动作的默认上下文已更改为路由器。如果您希望视图处理操作,您需要像这样指定它:

<button {{action testButton target="view"}}>test</button>

这是您的小提琴的工作版本:http: //jsfiddle.net/wtUML/4/

于 2012-08-03T20:04:57.850 回答
1

@buuda 确定了它,但如果您想了解更多信息,请参阅动作助手的嵌入式文档:

https://github.com/emberjs/ember.js/blob/master/packages/ember-handlebars/lib/helpers/action.js

于 2012-08-03T21:12:29.533 回答