【问题标题】:Angularjs Use injectect module's controller in route definitionAngularjs 在路由定义中使用注入模块的控制器
【发布时间】:2015-01-28 12:00:29
【问题描述】:

我是 Angular 新手,我正在尝试模块化我的应用程序。

我的主模块得到了一些其他模块,我想在我的路由定义中使用注入模块的控制器。 一些简单的例子会很有帮助!

这不起作用:

var app = angular.module('Contacting_App', ['LeadLookup']);

app.config(['$routeProvider', function($routeProvider) {
                    $routeProvider.
                        when('/main', 
                            {controller: 'MainCtrl', 
                            templateUrl: 'apex/f42_Contacting_Main'}
                        ).
                        when('/lead', 
                            {module: 'LeadLookup',
                            controller: 'LeadLkpCtrl', 
                            templateUrl: 'apex/f42_Lead_Lookup'}
                        ).
                        otherwise(
                            {redirectTo: '/main'}
                        );
                }]);

【问题讨论】:

    标签: angularjs angularjs-routing angularjs-module


    【解决方案1】:

    本教程页面可能会为您指明正确的方向 docs.angularjs.org/tutorial/step_07

    你应该看的主要内容是:

    模块

    var phonecatApp = angular.module('phonecatApp', [
      'ngRoute',
      'phonecatControllers'
    ]);
    

    路由提供者

    phonecatApp.config(['$routeProvider',
      function($routeProvider) {
        $routeProvider.
          when('/phones', {
            templateUrl: 'partials/phone-list.html',
            controller: 'PhoneListCtrl'
          }).
          when('/phones/:phoneId', {
            templateUrl: 'partials/phone-detail.html',
            controller: 'PhoneDetailCtrl'
          }).
          otherwise({
            redirectTo: '/phones'
          });
      }]);
    

    控制器

    var phonecatControllers = angular.module('phonecatControllers', []);
    
    phonecatControllers.controller('PhoneListCtrl', ['$scope', '$http',
      function ($scope, $http) {
        $http.get('phones/phones.json').success(function(data) {
          $scope.phones = data;
        });
    
        $scope.orderProp = 'age';
      }]);
    
    phonecatControllers.controller('PhoneDetailCtrl', ['$scope', '$routeParams',
      function($scope, $routeParams) {
        $scope.phoneId = $routeParams.phoneId;
      }]);
    

    【讨论】:

    • 感谢您的回复!也许我应该更详细地解释我想做的事情:在 /main 页面上是一个通向 /lead 页面的按钮。 LeadLkpCtrl 会在此处获取一些数据,并将通过服务(此处尚不存在)将其传递回 MainCtrl。至少这是我打算做的..如果有更好的方法我很乐意听到;)
    • 所以基本上这部分不起作用:when('/lead', {module: 'LeadLookup', controller: 'LeadLkpCtrl', templateUrl: 'apex/f42_Lead_Lookup'})
    • 在这里共享数据不是我的问题 ;) 我想告诉 Angular 使用 LeadLkpCtrl 进行 /lead 路由 - 就是这样 :)
    • 不,我在帖子中找到了它...当我无法在文档中找到此属性时,我也很困惑...
    • @MarcoSchmit 本教程页面可能会为您指明正确的方向docs.angularjs.org/tutorial/step_07。 “应用程序模块”和“控制器”中的信息似乎正是您要查找的信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 2015-04-02
    相关资源
    最近更新 更多