私はこの問題で数時間ブロックされているので、どんな助けも大歓迎です.
私は変数(空の配列)を定義したコントローラーを持っています:
function MainCtrl(scope, graph) {
scope.myVar = [];
graph.send("a", "b");
}
MainCtrl.$inject = ['$scope', 'plotData'];
plotData
私が書いたカスタムサービスです。$http
データベースにクエリを実行し、必要なデータを取得するために使用します。
angular.module('myApp.services', []).
factory('plotData', ['$http', function(async) {
var mainScope = angular.element("#main").scope();
return {
send: function(plotType, plotDetail) {
var thisObj = this;
var ajaxConfiguration = {
method: 'POST',
url: '******************',
data: {
type: plotType,
detail: plotDetail
}
};
async(ajaxConfiguration).
success(function(data, status, headers, config) {
mainScope.myVar = data.plot;
/*
data.plot is what i expected!
I also try with: return data.plot;
*/
}).
error(function(data, status, headers, config) {
console.info("error");
});
},
doSomething: function(data) { },
doSomethingElse: function() { }
};
}]);
問題は、コントローラーでscope.myVar
変更されないことです。基本的に私がやろうとしているのは、コントローラーで定義された変数をディレクティブから更新することです。
私が間違っていることは何ですか?
アップデート:
@dogoku : 私が知っているように、$apply を使用する必要はありません。なぜなら、まだ Angular にある $http を使用しているためです。
@マーク・ライコック:
0) いいえ、私は実際の $http サービスを使用しています:
factory('plotData', ['$http', function(async) {
/* service */
}]);
1) はい、コードのコメントに書きました。data.plot は、私が期待していたものです。バックエンド コードはうまく機能するので、投稿していません。
2) リンクを試してお知らせします。
その間、どんな助けも大歓迎です。