2012-03-06 81 views
1

是否可以動態創建綁定?說我有一個名爲「App.obj」有2個屬性「阿爾法」和「貝塔」的對象,我想在兩個地方使用相同的視圖中使用它:在創建對象時動態創建綁定 - 可能嗎?

{{view App.AView name="alpha"}} 

{{view App.AView name="beta"}} 

該視圖旨在綁定到App.obj的'alpha'或'beta'屬性,具體取決於它的名稱屬性設置爲什麼,這樣當綁定屬性發生更改時,視圖也會發生更改。因此,這裏練習的重點是,如果給定對象的兩個非常類似的屬性,我可以創建一個綁定到其中任何一個的單個視圖,並在該屬性更改時自行更新。

是否有可能使視圖對象綁定到App.obj上的alpha或beta動態基於在創建時用'name'傳入的內容?

感謝

回答

2

爲什麼你不只是做{{view App.AView name="alpha" objBinding="App.obj"}},然後在你的App.AView的定義:

App.AView = Ember.View.extend({ 

didInsertElement: function() { 
    var name = this.get('name'); 
    var objAlpha = this.getPath('obj.alpha'); 
    var objBeta = this.getPath('obj.beta'); 

    if(name == 'alpha') { 
     console.log(objAlpha); 
    } else if (name == 'beta') { 
     console.log(objBeta); 
    } 
} 
}); 

我在this jsFiddle一個完整的例子。只要看看你的控制檯。

+0

那麼重點是,如果視圖應該綁定到對象的alpha或beta屬性,那麼當視圖發生更改時,視圖也會發生更改。這隻會使用視圖創建時的屬性值,對吧?我應該在原始問題中真正澄清這個問題...... – 2012-03-06 18:53:07

+1

因此,您有一個對象'App.obj',其屬性爲'.alpha'和'.beta',並且您希望具有'App.getPath('obj.alpha') '綁定到定義爲'{{view App.AView name =「alpha」}}'的視圖。所以'App.getPath('obj.alpha')'會返回上面提到的Ember.View實例?如果是這樣,我會對你的設計有一些主要問題......在你的澄清中,你可以更具體地確定你想要解決什麼問題?代碼示例會有很大幫助。把我上面的jsFiddle叉起來,修改它來證明你遇到的任何問題。我會很高興看看:) – 2012-03-06 19:32:53

+0

我只是按下ctrl-r而不是ctrl-s在jsfiddle中,並且失去了我所有的工作。我現在不打算重做它,所以我只是將對象上的所有屬性添加到視圖的計算屬性上的依賴關係列表,因此解決了我的問題 - 如何使1視圖看起來完全相同相同,但基於可配置參數提供對象的不同屬性。 – 2012-03-06 23:23:19