app.controller('controller_name', function ($scope, $location, $auth, toastr, $http, CONFIG, $stateParams, $uibModal, $q, localStorageService, $anchorScroll, roundProgressService, $sce, calendarConfig, moment, $window, $rootScope) {
$scope.a1(a, b, c, d, e).then(function(data){
if (data.status == "OK") {
angular.extend($scope.pets_list, response.data['pets_list']);
}
});
$scope.a1 = function(a, b, c, d, e){
$http({
method: 'POST',
url: 'url',
data: {a: a, a: b},
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}).success(function (response) {
return response.data;
});
};
});
使用后使用函数我收到错误" TypeError:无法读取属性'然后'未定义"
答案 0 :(得分:0)
您不能使用该功能,而是承诺
scope.get = function(a, b, c, d, e) {
var defered = $q.defer();
$http.post('some_url', {a: a, a: b}).success(function(response){
defered.resolve(response);
}).error(function(response){
defered.reject(response);
});
return defered.promise;
};
};
var promise = scope.get(a, b, c, d, e);
promise.then(function(response){
console.log(response);
},function(error){
console.log(error);
});
答案 1 :(得分:0)
你应该看看你的控制台。 Javascript使用提升,因此您可以在调用后定义函数。
示例吊装
function foo() {
myFunc();
function myFunc(){
console.log('foo');
}
}
foo();

但是在您的示例中,$ scope已经定义。在定义此对象之前调用该对象应该会导致错误。
错误示例
function foo(obj) {
obj.myFunc(); // TypeError: obj.myFunc is not a function(…)
obj.myFunc = function(){
console.log('foo');
}
}
var myObject = {};
foo(myObject);

只需在$scope
上定义后使用该函数,或者在$scope
上不需要该函数,就可以使用该函数。
本地功能
app.controller('controller_name', function () {
a1(a, b, c, d, e).then(function(data){
// use result from promise
});
function a1(a, b, c, d, e){
// logic
};
});
使用范围内的功能
app.controller('controller_name', function () {
$scope.a1 = a1; // hide implementation details on bottom
$scope.a1(a, b, c, d, e).then(function(data){
// use result from promise
});
function a1(a, b, c, d, e){
// logic
};
});
包含实时代码段的常规示例
function foo(obj) {
obj.myFunc = myFunc;
obj.myFunc();
function myFunc(){
console.log('foo');
}
}
var myObject = {};
foo(myObject);