2015-06-14 52 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

相关问题