我正在尝试使用promises来整理我的Angular代码。但是当我输入回调函数(成功或错误)时。我的范围已经消失。 $ scope,service和object在回调中都是null。
变量vm仍然是已知的。
关于如何解决此问题的任何想法?
(function (app) {
'use strict';
var MyController = (function () {
function MyController($scope, aService, anotherService) {
var vm = {
loaded: false,
anObjToInstantiate: null,
error: null
};
aService.makeAServiceCall()
.success(function (result) {
vm.anObjToInstantiate = result.data;
anotherService.notifySomething(); /* Null! */
vm.loaded = true;
})
.error(_handleError);
function _handleError(error) {
vm.error = error;
}
return vm;
};
MyController.$inject = ['$scope', 'AService', 'AnotherService'];
return MyController;
}());
app.controller('MyController', MyController);
}(angular.module('app.amodule')));
答案 0 :(得分:1)
您的控制器定义错误。它不应该返回任何东西。它所做的就是使用范围变量和服务。
<强>控制器强>
(function(app) {
'use strict';
var MyController = function($scope, aService, anotherService) {
$scope.vm = {
loaded: false,
anObjToInstantiate: null,
error: null
};
aService.makeAServiceCall()
.success(function(result) {
$scope.vm.anObjToInstantiate = result.data;
anotherService.notifySomething(); /* Null! */
$scope.vm.loaded = true;
})
.error(_handleError);
function _handleError(error) {
$scope.vm.error = error;
}
};
MyController.$inject = ['$scope', 'AService', 'AnotherService'];
}());
app.controller('MyController', MyController);
}(angular.module(&#39; app.amodule&#39;)));
对于ControllerAs
它想在下面
<强>控制器强>(ControllerAs)
(function(app) {
'use strict';
var MyController = function($scope, aService, anotherService) {
var ctrl = this;
ctrl.vm = {
loaded: false,
anObjToInstantiate: null,
error: null
};
aService.makeAServiceCall()
.success(function(result) {
ctrl.vm.anObjToInstantiate = result.data;
anotherService.notifySomething(); /* Null! */
ctrl.vm.loaded = true;
})
.error(_handleError);
function _handleError(error) {
ctrl.vm.error = error;
}
};
MyController.$inject = ['$scope', 'AService', 'AnotherService'];
}());