プロジェクトで m.request を使用していますが、長時間実行される可能性があるリクエストがあるため、 で実行したいと考えていbackground:true
ます。ただし、値が generated に設定されることはないようm.prop
です。
このスタック オーバーフローの回答に基づいた例で jsFiddle を作成しました: http://jsfiddle.net/u5wuyokz/9/
私が期待しているのは、ビューへの 2 番目の呼び出しの応答値が であるはずですが、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');
}
};