几个小时以来,我一直在解决这个问题,因此非常感谢任何帮助。
我有一个控制器,我在其中定义了一个变量(一个空数组):
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)我会试试你的链接,让你知道。
同时,仍然欢迎任何帮助。