Ember.js 使用路由时,如何访问视图属性和操作处理程序?

Ember.js 使用路由时,如何访问视图属性和操作处理程序?,ember.js,Ember.js,似乎当我在Ember.js中使用新的路由功能时,视图上定义的属性和操作处理程序无法从其模板访问。相反,只有控制器的属性可用,应用程序在路由器中查找操作处理程序 以下是问题的一个示例: 如果单击我的个人资料-->照片-->测试,您将在控制台中看到此错误: 无法响应状态为的事件testButton root.profile.photos 显然,App.PhotosView中定义的以下操作处理程序对事件不可用 App.PhotosView = Em.View.extend({ template

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

以下是问题的一个示例:

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

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

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

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

是否有一种方法可以将我的操作处理程序保存在相关的视图类中?我遗漏了什么吗?

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

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

这是您的小提琴的工作版本:

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

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

这是您的小提琴的一个工作版本:

@buuda钉住了它,但如果您想阅读更多内容,请参阅动作助手的嵌入式文档:


@buuda已经解决了这个问题,但如果您想阅读更多内容,请参阅action helper的嵌入式文档:


谢谢!这正是我要找的。FWIW,我还找到了访问视图属性的方法:只需在属性名称之前添加“view.”,例如{{view.property}}。是的,内容的上下文已更改为控制器。很难跟上变化。谢谢!这正是我要找的。FWIW,我还找到了访问视图属性的方法:只需在属性名称之前添加“view.”,例如{{view.property}}。是的,内容的上下文已更改为控制器。很难跟上变化。谢谢,嵌入式文档非常有用。谢谢,嵌入式文档非常有用。