AngularJS只创建一次控制器

时间:2016-07-08 16:30:19

标签: javascript angularjs

我调查了如何只创建一次控制器,但我没有找到任何真正好的解决方案。

A只找到了一些解决方法

  1. 在$ rootScope中创建控制器列表并添加此处创建的控制器
  2. 创建masterController,并在其范围内应用解决方案,将所有创建的控制器保存在masterControllerScope的集合中
  3. 因此,如果我的模板加载,我必须使用 special myService 来聚合控制器,服务也必须进行检查。如果已经创建了控制器 - 应该加载旧的控制器,而不是新的控制器,另一种方式是刚刚创建控制器集合。

    算法看起来很简单,但对于使用角度来说很难看。我希望我的角度非常弱,这就是为什么我没有找到更好的解决方案。

    能否请您提出更好的想法或解决方案! 可能我需要重新设计我需要的东西或服务已在基础库中实现...

    添加更多说明:

    ng-app=singleApplication
    |-ng-view
    

    SingleApplication具有 ng-route 来管理 ng-view 的模板。每个模板都有一个唯一控制器。每当与当前视图不同时,我都会看到控制器创建。但是如果模板加载一次,我需要不要求服务器提供数据。我需要显示模板与旧数据,表格,控件,但我不能控制器每次都创建。所有数据都加载在控制器范围)中,所有键在控制器范围中都是唯一的,但如果我没有很好的保证将数据保存到 $ scope $ rootScope

1 个答案:

答案 0 :(得分:2)

如果所有控制器都是在一个模块下创建的,那么我们可以使用该模块控制器

请找到以下示例

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


app.controller('TextController', function ($scope) {
    $scope.text = {
        message: 'Welcome!!'
    };
});

app.controller('ItemController', function ($scope) {
    $scope.items = [{
        title: 'Pencil',
        quantity: 8,
        price: 4.2
    }, {
        title: 'Pen',
        quantity: 2,
        price: 5.2
    }, {
        title: 'Watch',
        quantity: 3,
        price: 10.2
    }];
});

http://codepen.io/nagasai/pen/bZoVVG