AngularJS:在$routeProvider完成请求后访问' $scope '值

AngularJS: Access `$scope` values after $routeProvider finished request

本文关键字:访问 scope 请求 routeProvider AngularJS      更新时间:2023-09-26

如何在完成Ajax请求后调用/访问控制器方法($scope.some_function()) !

var app = angular.module('home', ['ngRoute']);
app.controller('IModalCtrl', function ($scope, $http, $route, $routeParams, $location) {
    $scope.will_call_this = function() {
        //
    };
});
app.config(['$routeProvider', '$locationProvider', '$httpProvider',
    function ($routeProvider, $locationProvider, $httpProvider) {
        $locationProvider.html5Mode(true);
        $routeProvider
            .when('/news/:cat/:slug/:id', {
                templateUrl: function (attr) {
                    return '/news/' + attr.cat + '/' + attr.slug + '/' + attr.id + '?ajax=1'
                },
                controller: 'IModalCtrl'
                // IS ANY PROPERTY/METHOD HERE
                // WHICH WILL ALLOW/ACCESS TO CONTROLLER PROPERTY
            })
            .otherwise('/');
    }]);

在上面,我想在$routeProvider完成请求后调用IModalCtrl$scope.will_call_this()函数。就像jQuery ajax一样。

jQuery Ajax,例如:

jQuery.ajax("example.php")
    .done(function () {
        alert("success");
        // Need this functionality in AngulaJS
    })
    .fail(function () {
        alert("error");
    })
    .always(function () {
        alert("complete");
    });

请尝试以下操作。

app.controller('IModalCtrl', function ($scope,$rootScope, $http, $route, $routeParams, $location) {
    $scope.will_call_this = function() {
        //
    };
    $rootScope.$on('$routeChangeSuccess', function (event, next, current) {
        $scope.will_call_this();
    });
});