我在一个项目中使用 m.request,并且由于我有一个可能长时间运行的请求,我想用background:true
. 但是,似乎该值永远不会设置为生成的m.prop
.
我已经制作了一个 jsFiddle,其中包含一个基于此Stack Overflow 答案的示例:http : //jsfiddle.net/u5wuyokz/9/
我期望发生的是对视图的第二次调用应该有响应值ctrl.test.data()
,但它似乎仍然有undefined
。在Point A
代码中,它记录了正确的值。但是,在Point B
,它记录false, undefined
然后true, undefined
。
我不确定我做错了什么,或者这是预期的行为。
来自 jsFiddle 的代码:
var requestWithFeedback = function(args) {
var completed = m.prop(false)
var complete = function(value) {
completed(true)
return value
}
args.background = true
return {
data: m.request(args).then(complete, complete).then(function(value) {
//Point A
console.log(value);
m.redraw()
return value
}),
ready: completed
}
};
var mod = {
controller : function() {
this.test = requestWithFeedback({
method : "POST",
url : "/echo/json/",
serialize: serialize,
config: asFormUrlEncoded,
data : {
json : "{\"name\" : \"testing\"}"
}
});
},
view : function(ctrl) {
//Point B
console.log(ctrl.test.ready(), ctrl.test.data());
return m("div", ctrl.test.ready() ? 'loaded' : 'loading');
}
};