在angularJS中访问页面之间的控制器

时间:2016-04-30 09:34:57

标签: javascript jquery html angularjs

对角度js来说是新手。我的问题是,是否可以为不同的页面共享一个控制器。

我有一个网站模板。现在我试图用角度js编码。 我有2个页面,如home.html和new.html

home.html如下所示。

 <!DOCTYPE html>
    <html>
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>

    <body>

    <div ng-app="myApp" ng-controller="kkCtrl">
        <p>My first expression: {{ 5 + 5 }}</p>

    <a herf="new.html" ng-click="getDatass('w')"> new</a>
    </div
    </body>
    </html>


 <script>
    var app = angular.module('myApp', []);

    app.controller('kkCtrl',["$scope", "$http", function($scope, $http) {
    $scope.getDatass= function(a){
            $scope.k= a;
    }
    }])
    </script>

我的new.html是

<div ng-controller="kkCtrl">
    <table>
    <tr><td>kkk</td>
    <td>lll</td>
    </tr>
    </table>
    {{k}}
    </div>

我的问题是,如果我点击home.html上的“新”链接,它应该重定向到new.html,是否可以在new.html中查看“$ scope.a”的值...请帮助我。

3 个答案:

答案 0 :(得分:0)

我不认为页面之间共享控制器是最好的做法是AngularJS。每个视图都应该有自己的控制器。如果要在每个视图页面之间传递数据,可以使用angular-ui-router通过ui-sref传递参数来实现。我建议您阅读有关AngularJS Best Practice here的更多信息。它提供了AngularJS中使用的最佳样式指南。

答案 1 :(得分:0)

您无法在new.html中访问home.html中设置的范围变量。

我们可以在任意数量的视图中使用相同的控制器。但是,当创建新视图时,将使用$ scope的新实例创建控制器。

控制器的行为就像第一次加载一样。

要解决您的问题,您可以创建角度服务或工厂,并将其用于数据共享。

答案 2 :(得分:0)

每个视图都应该有自己的控制器。如果你想要&#34;全球&#34;函数/变量,即视图(控制器)之间共享的代码,您应该查看services概念。创建一个包含k变量的服务,并通过依赖注入使控制器中的服务可用。

angular.module('myApp')
  .factory('myService', function() {

   //local variable or functions here
   var local = true;

   //variables and functions exposed to the outside 
   return {
      k: 0
   }
});

现在包含myService作为kkCtrl的依赖项:

app.controller('kkCtrl',["$scope", "$http", "myService", function($scope, $http, myService) {

您现在可以设置或获取k

$scope.getDatass= function(a){
  myService.k = a;
}