一尘不染

创建通用控制器功能

angularjs

如何创建可从所有控制器访问的某种utils捆绑包?

我的主模块中有以下路由代码:

'use strict';

angular.module('lpConnect', []).
    config(['$routeProvider', function($routeProvider) {
    $routeProvider.
        when('/home', {template: 'views/home.html', controller: HomeCtrl}).
        when('/admin', {template: 'views/admin.html', controller: AdminCtrl}).
        when('/connect', {template: 'views/fb_connect.html', controller: MainAppCtrl}).
        otherwise({redirectTo: '/connect'});
}]);

我想是可以通用的功能HomeCtrlAdminCtrlMainAppCtrl

我应该如何在AngularJS中做到这一点?


阅读 256

收藏
2020-07-04

共1个答案

一尘不染

用角度定义通用代码的方法是通过服务。

您将像这样定义一个新服务:

.factory('CommonCode', function ($window) {
        var root = {};
        root.show = function(msg){
            $window.alert(msg);
        };
        return root;
    });

在您的控制器中,您将注入此服务。

function MainAppCtrl($scope,CommonCode)
{
     $scope.alerter = CommonCode;
     $scope.alerter.show("Hello World");
}

只需将CommonCode用作控制器函数的参数即可。Angular会为您注入它(请阅读Dependency Injection ..了解此处的情况。)

2020-07-04