2015-06-14 80 views
0

我確實有一個控制器,其中有一個操作{{loadRight}},當我單擊按鈕時,會將當前模型傳遞給控制器​​。在Ember.js中通過操作更改其值的計算屬性

當我第一次加載應用程序時,我也使用firstElement計算屬性,它從我的模型數組中拉出第一個元素。

基本上我想要做的是創建第二個計算屬性,它將返回當前模型的點擊,以便我可以在我的模板中使用這些信息。

我創建了一個currentElement的計算屬性,但是因爲我在JavaScript中吮吸我無法將當前模型從操作方法傳遞到計算屬性。我不斷收到模型未定義的錯誤。

我將不勝感激任何幫助。以下是我的控制器。

// controller works.js 
import Ember from "ember"; 

export default Ember.Controller.extend({ 
    firstElement: function() { 
    return this.get('model.firstObject'); 
    }.property('model.[]'), 


    currentElement: function() { 
    if(!currentModel) { 
     currentModel = this.get('model.firstObject'); 
    } 
    return currentModel; 
    }.property('model.[]'), 


    actions: { 
    loadRight: function (currentElement) { 
    console.log(currentElement); 
    } 

    }}); 
+0

簡化事情,我剛剛創建了一個要點:https://gist.github.com/ilteris/ffe5064a3c2242dbbcd5 – ilteris

回答

1

您可以定義屬性selectedElement(單擊它)。當loadRight被解僱時,您可以設置selectedElementselection。 然後currentElement是簡單的計算屬性,取決於model.firstObjectselectedElement

export default Ember.Controller.extend({ 
    firstElement: function() { 
    return this.get('model.firstObject'); 
    }.property('model.[]'), 

    selectedElement: null, 

    currentElement: function() { 
    return (this.get('selectedElement') || this.get(`firstElement`)); 
    }.property('firstElement', 'selectedElement'), 

    actions: { 
    loadRight: function (selection) { 
     this.set('selectedElement', selection); 
     return false; // or something transition logic 
    } 
    } 
}); 
+0

當應用程序啓動currentElement是空的(任意點擊之前)。我想在這裏設置currentElement爲model.firstObject。所以如果(!selectedElement)我必須返回this.get('model.firstObject')。 – ilteris

+0

固定'currentElement' – artych

+0

有趣,.property('firstElement','selectedElement')做什麼? – ilteris