2012-06-12 38 views
3

當Ember遍歷一系列對象並將它們輸出到一個頁面時,比如說一個側欄中的鏈接列表,Ember會爲每個元素創建一個上下文。當該項目被點擊時,Ember將該元素作爲上下文傳遞給方法。在Ember.js中創建一個虛假的「上下文」

如何隨意創建該上下文的假版本?我基本上想重用一個當前從onclick事件接收上下文的方法。

+0

你能匆匆想出你想要做什麼的快速jsfiddle嗎?我想我明白了,但在我告訴你一些不正確之前,我想確定一下。 –

+0

我可以做得比那更好: http://andymatthews.net/code/PM/ 我的問題有兩種方法。添加一個客戶端,然後我希望該客戶端成爲「當前選定的」。在我的想法中,我將一個假上下文傳入我的loadProjects方法。同樣,當你添加一個項目...它沒有顯示出來,因爲我已經有了新創建的項目,我也可以通過它。 – commadelimited

回答

0

我不明白這個問題,但會給它一個機會。我認爲你想要完成的事情可以通過直接設置環境來完成,可能應該忽略視圖。

clientsArray 
.... 
    loadProjects: function(view){ 
     this.set('currentClient', view.context); 
    }, 

    _setProject: function(){ 
     console.log('loading projects'); 

     var context = this.get('currentClient'); 
     PM.projectsArray.set('content', []); 
     PM.projectsArray.pushObjects(context.get('projects')); 
    }.observes('currentClient') 
.... 

然後在你的「addProject」方法只設置「currentClient」(在clientArray)到新的情境(你的「項目」對象)。觀察者會挑選並照顧其餘的人。能夠觀察變化的價值並相應地更新環境是燼寶的強項之一;它可以防止你需要做很多明確的工作。這意味着你不需要自己寫所有的引導代碼,框架就可以完成工作。製作假視圖會使代碼複雜化。

+0

我個人沒有找到一個和提琴手一樣有用的網站,因爲我不能簡單地修改代碼並像我平常那樣運行。另外,在編寫小提琴時,您可以將代碼縮減爲一個非常具體的問題,並且不必擔心網站周圍其他任何事情的額外開銷。 – SciSpear