如何为一个模板拥有一个控制器的多个实例

回来

尝试对通用模板使用可重用的控制器

html

<div class="row col-lg-10 pull-right">

   <div ng-init="catId = 1" ui-view="firstQuadrant"></div>
   <div ng-init="catId = 2" ui-view="secondQuadrant"></div>

</div>

<div class="row col-lg-10 pull-right">

   <div ng-init="catId = 3" ui-view="thirdQuadrant"></div>
   <div ng-init="catId = 4" ui-view="fourthQuadrant"></div>

</div>

来自我的views对象的代码段$stateProvider

views : {
    'firstQuadrant@home': {
      templateUrl: "../partials/quadrant/quadrant.html",
      controller: "QuadrantCtrl"
    },
    'secondQuadrant@home': {
      templateUrl: "../partials/quadrant/quadrant.html",
      controller: "QuadrantCtrl"
    },
    'thirdQuadrant@home': {
      templateUrl: "../partials/quadrant/quadrant.html",
      controller: "QuadrantCtrl"
    },

    'fourthQuadrant@home': {
      templateUrl: "../partials/quadrant/quadrant.html",
      controller: "QuadrantCtrl"
    }
}

控制器代码

.controller('QuadrantCtrl', ['$scope', '$rootScope', 'categories', 'utils', 
   function ($scope, $rootScope, categories, utils) {

  $scope.$watch('catId', function () {
      console($scope.catId); 
      $scope.categories = categories;
      $scope.name = "It works! weee";
      $scope.score = 99;
      $scope.items = utils.findById($scope.categories, $scope.catId);
  });     

}]);

它似乎只使用实例化的最后一个控制器(catId = 4),我如何才能拥有4个隔离的作用域?我是否必须使用指令?

拉迪姆·科勒

您的方案应该可以工作(不确定这是否是好的设计)有一个工作的家伙

但是我们必须将开关catId从ng-init移到状态定义。化解

如果状态是这样定义的:

// home
$stateProvider
  .state('home', {
    url: '/home',
    templateUrl: 'tpl.layout.html',
    controller : "rootController",
  })

具有多视图的子状态

  .state('child', {
    parent: "home",
    url: '/child',
    templateUrl: 'tpl.example.html',
    views : {
       'firstQuadrant@home': {
          templateUrl: "tpl.quadrant.html",
          controller: "QuadrantCtrl",
          resolve: { catId : function(){ return 1 } },
        },
        'secondQuadrant@home': {
          templateUrl: "tpl.quadrant.html",
          controller: "QuadrantCtrl",
          resolve: { catId : function(){ return 2 } },
        },

        'thirdQuadrant@home': {
          templateUrl: "tpl.quadrant.html",
          controller: "QuadrantCtrl",
          resolve: { catId : function(){ return 3 } },
        },

        'fourthQuadrant@home': {
          templateUrl: "tpl.quadrant.html",
          controller: "QuadrantCtrl",
          resolve: { catId : function(){ return 4 } },
        }
    }
  })

简化的控制器在范围内创建随机数

.controller('QuadrantCtrl', ['$scope', '$rootScope', 'catId' 
, function ($scope, $rootScope, catId) {

      $scope.catId = catId;

      console.log($scope.catId); 

      $scope.random = Math.random() * 100;

}])

然后,每个视图都独立于其自己的controller和$ scope实例

在这里检查

然后我们可以看到这样的结果


范围内的象限随机数:32.40865177940577 catId:1


范围内的象限随机数:17.18798188958317 catId:2


范围内的象限随机数:76.22438217513263 catId:3


范围内的象限随机数:41.46456739399582 catId:4

如果象限模板是:

<h4>quadrant</h4>
<p>random number in the scope: {{random}}</p>
<p>catId: {{catId}}</p>

所有严格遵循文档的内容:

多个命名视图

以上内容工作示例

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何通过同一个插件拥有多个播放器实例

来自分类Dev

如何使用Iron-Router使用一个路由控制器渲染多个模板?

来自分类Dev

如何使用Iron-Router使用一个路由控制器渲染多个模板?

来自分类Dev

如何从另一个视图控制器实例化导航控制器?

来自分类Dev

使用多个入口控制器-是否可以有一个“默认”控制器?

来自分类Dev

如何从一个导航控制器推送到多个视图控制器?

来自分类Dev

如何为多个域拥有一个Google Analytics(分析)帐户

来自分类Dev

在模板中,我如何拥有一个柜台?

来自分类Dev

管理同一个视图控制器的多个实例

来自分类Dev

如何使用一个ajax发送多个实例并在laravel中接收控制器调用

来自分类Dev

从AngularJS如何将数据从一个控制器+模板传递到另一个控制器+模板?

来自分类Dev

每个视图有多个模型,多个模型有一个控制器?

来自分类Dev

多个servlet,或仅一个主控制器

来自分类Dev

一个视图控制器中的多个图形

来自分类Dev

一个viewcontroller中的多个tableview控制器

来自分类Dev

如何为一个控制器禁用传送 Steam VR/Unity

来自分类Dev

一个单一的实体类型可以有多个控制器吗?

来自分类Dev

Rails 控制器渲染所有测试的最后一个迭代模板

来自分类Dev

AngularJS:如何从另一个控制器中动态初始化模板中的控制器

来自分类Dev

AngularJS:如何从另一个控制器中动态初始化模板中的控制器

来自分类Dev

如何将数据从一个视图控制器传递到另一个视图控制器,并且在视图控制器之间有一个显示视图控制器

来自分类Dev

如何将 FXML ComboBox 实例从一个控制器传递到另一个控制器?

来自分类Dev

实例化另一个视图控制器时如何传递数据

来自分类Dev

一个表单在多个页面上使用一个控制器操作

来自分类Dev

创建一个控制器

来自分类Dev

Soundcloud:如何在一个播放器中拥有多个曲目

来自分类Dev

一个场景中有多个视图控制器?

来自分类Dev

一个GKE入口控制器是否可能具有多个入口资源

来自分类Dev

一个MVC控制器类可以有多个IEnumerable吗?

Related 相关文章

  1. 1

    如何通过同一个插件拥有多个播放器实例

  2. 2

    如何使用Iron-Router使用一个路由控制器渲染多个模板?

  3. 3

    如何使用Iron-Router使用一个路由控制器渲染多个模板?

  4. 4

    如何从另一个视图控制器实例化导航控制器?

  5. 5

    使用多个入口控制器-是否可以有一个“默认”控制器?

  6. 6

    如何从一个导航控制器推送到多个视图控制器?

  7. 7

    如何为多个域拥有一个Google Analytics(分析)帐户

  8. 8

    在模板中,我如何拥有一个柜台?

  9. 9

    管理同一个视图控制器的多个实例

  10. 10

    如何使用一个ajax发送多个实例并在laravel中接收控制器调用

  11. 11

    从AngularJS如何将数据从一个控制器+模板传递到另一个控制器+模板?

  12. 12

    每个视图有多个模型,多个模型有一个控制器?

  13. 13

    多个servlet,或仅一个主控制器

  14. 14

    一个视图控制器中的多个图形

  15. 15

    一个viewcontroller中的多个tableview控制器

  16. 16

    如何为一个控制器禁用传送 Steam VR/Unity

  17. 17

    一个单一的实体类型可以有多个控制器吗?

  18. 18

    Rails 控制器渲染所有测试的最后一个迭代模板

  19. 19

    AngularJS:如何从另一个控制器中动态初始化模板中的控制器

  20. 20

    AngularJS:如何从另一个控制器中动态初始化模板中的控制器

  21. 21

    如何将数据从一个视图控制器传递到另一个视图控制器,并且在视图控制器之间有一个显示视图控制器

  22. 22

    如何将 FXML ComboBox 实例从一个控制器传递到另一个控制器?

  23. 23

    实例化另一个视图控制器时如何传递数据

  24. 24

    一个表单在多个页面上使用一个控制器操作

  25. 25

    创建一个控制器

  26. 26

    Soundcloud:如何在一个播放器中拥有多个曲目

  27. 27

    一个场景中有多个视图控制器?

  28. 28

    一个GKE入口控制器是否可能具有多个入口资源

  29. 29

    一个MVC控制器类可以有多个IEnumerable吗?

热门标签

归档