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.firstObject
和 selectedElement
.
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
}
}
});
我确实有一个控制器,它有一个操作 {{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.firstObject
和 selectedElement
.
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
}
}
});