同时使用ng-controller和$ routeProvider

时间:2014-04-08 16:44:02

标签: angularjs angularjs-directive angular-ui

问题在于我有一个索引页面,其中包含我们可以调用的(部分)部分视图" A.html"使用控制器" ACtrl"由$ routeProvider分配,但在该局部视图中,我想使用不同的控制器为某些div使用ng-controller来包含" A1Ctrl"。

这可能吗?

不关注任何代码,但在概念中,如果这几乎不可能以及如何?

我试图在局部视图中包含类似的内容但没有成功:

A.html

... //Other stuff for this partial view
<div ng-controller="A1Ctrl">
   {{message}}
</div>

... //这个局部视图的更多内容

我已将包含A1Ctrl的.js包含在索引页面中,结果相同。有提示吗?

更新

我在plnkr中创建了一个示例代码,以显示我想要做的事情:http://plnkr.co/edit/hdpLMK3DbzNdz2KeHPEB?p=preview

点击&#34后生成部分视图;打个招呼&#34;它有自己的模板(&#34; first.html&#34;)和控制器,由$ routeProvider注入。但是在first.html的局部视图中,我想添加一个只有代码段的控制器。但我无法提出任何建议吗?

我还尝试使用依赖注入来包含模块&#34; multilinguage&#34;到router.js没有成功,因为它似乎生成错误。

的index.html

<html ng-app="plunker">

<head>
  ... //Other imports
  <script src="app.js"></script>
  <script src="router.js"></script>
  <script src="multilanguage.js"></script>
</head>

<body ng-controller="MainCtrl">
  <p>Hello {{name}}!</p>

  <a href="first">Say hi</a> |
  <a href="second">Say bye</a>
  <br/>

  <div ng-view=""></div>
</body>

</html>

first.html

{{message}}
<div ng-controller="MultiLang">
  {{message}}
</div>

router.js

var app = angular.module('router', ['ngRoute', 'multilanguage']).
config(function ($routeProvider, $locationProvider) {
     $locationProvider.html5Mode(true);
    $routeProvider.
    when("/first", {
        templateUrl: "first.html",
        controller: "EngLang"
    }).
    when("/second", {
        template: "Bye man!"
    });
});

app.controller('EngLang', function($scope) {
  $scope.message = 'Hi guys';
});

multilanguage.js

angular.module('multilanguage', []).
controller('MultiLang', function($scope){
  $scope.message = "Hallo, Hola, Ciao, Ni Hao"
});

提前致谢。

1 个答案:

答案 0 :(得分:0)

是的,您也可以使用嵌套控制器,例如:

<div ng-controller="A1Ctrl">
    {{ message }}

    <div ng-controller="subCtrl">
        {{ message }}
    </div>
</div>