4
我讀過Ember.js文檔+示例,並且使用綁定嵌套視圖讓我有點困惑。在Ember.js中聲明綁定的正確方法
我有以下簡稱HTML(工作正常):
{{#view App.outerArea}}
{{#view innerArea}}
{{view Ember.TextField valueBinding="parentView.parentView.bound.username"}}
{{/view}}
{{/view}}
...和JavaScript(也工作正常):
App = Ember.Application.create();
App.outerArea = Ember.View.extend({
bound : {
username:'test',
},
innerArea: Ember.View.extend({}),
});
(如果我從HTML刪除innerArea我可以刪除 'parentView.parentView。' 完全)
要清理乾淨了,我已經試過:
...
{{view Ember.TextField valueBinding="bound.username"}}
...
innerArea: Ember.View.extend({
bound: function() {
return App.outerArea.bound;
}
})
並試圖:
{{view Ember.TextField valueBinding="getPath(bound.username)"}} // with above bound: function().
還有一些其他的組合,但他們沒有在所有的工作。
還有更多優雅從TextField的valueBinding引用'parentView.parentView.bound.username'的方法嗎?是否有不止一種方法?什麼是這種事最好的設計模式?
謝謝!
非常感謝你的回覆。我有上面的代碼parentView.parentView肯定是在一個孤立的項目本地工作。 (我非常小心!)但顯然你的小提琴代碼也在工作!我的ember.js可能已經老了。我會檢查。編輯:是的,我在0.9.2上。我更新到0.9.6,現在它工作正常。 – shs 2012-04-11 18:05:52
因此,在Ember 0.9.6中,我在上面的TextField的同一級別添加了一個按鈕。並且該按鈕需要parentView.parentView的目標。這看起來很奇怪嗎? http://jsfiddle.net/K2v54/1/ – shs 2012-04-11 18:30:17
這很正常:按鈕視圖位於'outerArea'視圖內的'innerArea'視圖內,因此要從按鈕視圖範圍調用'outerArea.submitLogin',我們需要上兩次:首先獲得'innerArea'的作用域,並再次獲得'outerArea'的作用域。 – 2012-04-12 07:53:40