computed 属性 通过 Ember.js 中的操作更改其值

computed property that changes its value with action in Ember.js

我确实有一个控制器,它有一个操作 {{loadRight}},当我点击一个按钮时,它会将当前模型传递给控制器​​。

当我第一次加载应用程序时,我还使用 firstElement computed 属性 从我的模型数组中提取第一个元素。

基本上我想做的是创建第二个计算 属性,它将 return 当前单击的模型,以便我可以在我的模板中使用此信息。

我创建了一个 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);
    }

  }});

您可以定义 属性 selectedElement(已单击)。当 loadRight 被解雇时,您可以将 selectedElement 设置为 selection。 然后 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 
    }
  }
});