Ember.js 如何从emberjs中的操作返回值
如何从操作中返回一些值?? 我试过这个:Ember.js 如何从emberjs中的操作返回值,ember.js,Ember.js,如何从操作中返回一些值?? 我试过这个: var t = this.send("someAction", params); ... actions:{ someAction: function(){ return "someValue"; } } 试一试 而不是 vat r = this.send("someAction", params); 操作不返回值,只返回true/false/undefined以允许冒泡。定义一
var t = this.send("someAction", params);
...
actions:{
someAction: function(){
return "someValue";
}
}
试一试
而不是
vat r = this.send("someAction", params);
操作不返回值,只返回true/false/undefined以允许冒泡。定义一个函数 余烬代码:
send: function(actionName) {
var args = [].slice.call(arguments, 1), target;
if (this._actions && this._actions[actionName]) {
if (this._actions[actionName].apply(this, args) === true) {
// handler returned true, so this action will bubble
} else {
return;
}
} else if (this.deprecatedSend && this.deprecatedSendHandles && this.deprecatedSendHandles(actionName)) {
if (this.deprecatedSend.apply(this, [].slice.call(arguments)) === true) {
// handler return true, so this action will bubble
} else {
return;
}
}
if (target = get(this, 'target')) {
Ember.assert("The `target` for " + this + " (" + target + ") does not have a `send` method", typeof target.send === 'function');
target.send.apply(target, arguments);
}
}
只需对要返回的设置值使用@set即可
actions:{
someAction: function(){
// return "someValue";
this.set('var', someValue);
}
}
我也有同样的问题。我的第一个解决方案是让操作将返回值放在某个属性中,然后从调用函数获取属性值 现在,当我需要一个动作的返回值时,我定义了一个函数,它应该能够单独返回一个值,如果需要的话,可以在动作中使用它
App.Controller = Ember.Controller.extend({
functionToReturnValue: function(param1, param2) {
// do some calculation
return value;
},
});
如果需要来自同一控制器的值:
var value=this.get(“functionToReturnValue”).call(this,param1,param2)代码>
从另一个控制器:
var controller=this.get(“controller”);//从视图上看,[需要]或任何内容
var value=controller.get(“functionToReturnValue”)。调用(controller,param1,param2);//来自其他控制器
call()
方法的第一个参数必须是运行其返回函数的同一个对象;它设置此
引用的上下文。否则,该函数将从对象中检索,并从当前此
上下文中运行。通过定义这样的值返回函数,您可以使模型做得很好
更新我刚刚在API中找到了这个函数,它似乎正是这样做的:看看这个例子:
let t = this.actions.someAction.call(this, params);
不同之处在于输入错误,有一个输入错误我需要从另一个操作调用一个操作并使用返回值提取将值返回到函数中的逻辑并调用该函数,如果您给出一个更具体的示例,我可以在模板内更具体地说明您可以指定要传递的内容{{action'dosomething'item}在操作的内部,您可以这样做:someAction:function(item){}在Ember 1.6.1中成功地使用它。回答得很好,正是我想要的。谢谢你的发帖!
let t = this.actions.someAction.call(this, params);