使用ui-router定义控制器

时间:2016-06-25 07:28:44

标签: angularjs angular-ui-router

我正在使用ES6中的Angular js创建Web应用程序。我刚开始学习角度。我有以下问题,我从互联网上的资源中无法理解。

1)我正在使用ui-router进行基于状态的路由。我的控制器中有以下代码

myApp.config(function($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/home);
        $stateProvider
            .state('contact', {
            url: '/contact',
            templateUrl: 'contact.html',
           controller: myContactController
        });
};

Contact.html:

<div ng-controller=”myContactController”>
….
</div>

问题:

a)我在js中指定了我的状态控制器。我是否还需要在视图中使用ng-controller指定控制器?有什么区别以及为什么有必要?

2)我的应用程序有一个基本模块。

基础模块 - Index.js:

import subapp1 from  ‘./subApp1/index’;
angular.module(“myapp”,[subapp1]);

subApp1 / index.js

Export default function(){
Angular. module(“subApp1”,[]);
};

问题: a)这是将子模块依赖注入基础模块的正确方法吗?如果没有哪种方法将模块依赖注入基础模块? b)如果我能够获得最佳链接,以基本方式理解角度js中的依赖注入和不同范围,我将不胜感激。

2 个答案:

答案 0 :(得分:2)

  

我在js中指定了我的状态控制器。我是否还需要在视图中使用ng-controller指定控制器?有什么区别以及为什么有必要?

您不需要在HTML中使用ngController。路由器将获取HTML模板并使用指定的控制器进行编译。

  

我的应用程序有一个基本模块...

您可以通过名称指定依赖模块,因此您的设置可能如下所示(注意,如何导出Angular模块的name属性):

export default angular.module('subApp1', [])
  .factory('someService', semeService) // For example, attach some module service
  .directive('someDirective', someDirective) // ... or some components
  .name;

然后

import subapp1 from './subApp1/index';
import subapp2 from './subApp2/index';

angular.module('myapp', [
  subapp1,
  subapp2
]);

答案 1 :(得分:1)

1.a)不,你不应该。如果这样做,您将拥有两个控制器实例

2.a)没有。首先,你不要注射&#34;一个模块进入另一个模块:一个模块依赖于另一个模块,这是所有模块。这与依赖注入无关。它的语法是

angular.module('myapp', ['subApp1']);

即。数组的元素必须是您所依赖的模块的名称。当然,这些模块本身必须使用

来定义(之前或之后,它并不重要)
 angular.module('subApp1', []);

2.b)https://docs.angularjs.org/guide