如何使用然后使用角度JS功能?

时间:2017-02-07 11:23:23

标签: angularjs

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:无法读取属性'然后'未定义"

2 个答案:

答案 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);