看來,當我在Ember.js中使用新的路由功能時,視圖中定義的屬性和動作處理程序無法從其模板訪問。相反,只有控制器的屬性可用,應用程序會在路由器中查找動作處理程序。當我使用路由時,如何訪問視圖屬性和動作處理程序?
這是問題的一個例子:http://jsfiddle.net/InMatrix/wtUML/3/
如果您點擊我的個人資料--->照片--->測試,你會得到這個錯誤在控制檯:
可能不響應事件testButton,狀態爲 root.profile.photos。
顯然,App.PhotosView中定義的以下操作處理程序不可用於該事件。
App.PhotosView = Em.View.extend({
templateName: 'photos',
testButton: function(){
alert('test Button');
}
});
有沒有辦法讓我的操作處理程序保留在相關的視圖類中?我錯過了什麼嗎?
Thanks!這正是我要找的。 FWIW,我也找到了訪問視圖屬性的方法:只需添加「視圖」。在屬性名稱之前,例如{{view.property}}。 – Tao 2012-08-03 20:40:02
是的,內容的上下文已更改爲控制器。很難跟上這些變化。 – buuda 2012-08-03 20:49:22