角度路线 - 负载时调用功能

时间:2015-10-29 02:10:02

标签: angularjs

我正在使用$routeProvider将我的所有应用页面路由到相关controllers,但当两个routes使用相同的controllers时(即/ blog& /博客:id)如何根据当前function初始化单独的route

因此,如果路由是/ blog我想在路由加载时初始化$ scope.loadPosts()。 如果路由是/ blog:id我想在路由加载时初始化$ scope.loadPost($ id)。

2 个答案:

答案 0 :(得分:4)

你可以在这里做一些事情,但我的建议是通过解决路径来传递初始化函数。你可以这样做:



angular.module('test', ['ngRoute'])
  .config(['$routeProvider',
    function($routeProvider) {
      $routeProvider
        .when('/blog', {
          controller: 'BlogController',
          template: '<h1>Blog</h1>',
          resolve: {
            init: function() {
              return function() {
                console.log('Loading Blog');
              }
            }
          }
        })
        .when('/blog/:id', {
          controller: 'BlogController',
          template: '<h1>Blog ID</h1>',
          resolve: {
            init: function() {
              return function($route) {
                console.log('Loading Blog Article ' + $route.current.params.id);
              }
            }
          }
        });
    }
  ])
  .controller('BlogController', ['$scope', '$route', 'init',
    function($scope, $route, init) {
      init($route);
    }
  ]);
&#13;
<!DOCTYPE html>
<html ng-app="test">

<head>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.7/angular.min.js"></script>
  <script src="https://code.angularjs.org/1.4.6/angular-route.js"></script>

</head>

<body>
  <a href="#/blog">Go to Blog</a>
  <a href="#/blog/2">Go to Article 2</a>

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

</html>
&#13;
&#13;
&#13;

其他一些选择是:

  • 解决某些指示器,您可以在控制器内的初始化函数中执行此操作
  • 如果您正在加载博客路线,请解析未定义的对象,如果您正在加载博客:ID路由,请解析您为该路线加载的实际项目

希望这段代码可以帮助您按照自己的决定开始正确的方向。

修改这里是link to a plunker,代码段似乎间歇性地表现错误

答案 1 :(得分:2)

执行此操作的简单方法是,在相应的a = srp(Ether() / IP(src="192.168.1.100",dst="8.8.4.4") / UDP(sport=RandShort(),dport=53) / DNS(rd=1,qd=DNSQR(qname="google.com",qtype="ALL",qclass="IN"), ar=DNSRROPT(rclass=3000)), timeout=1) print len(a[0][0][0]), len(a[0][0][1]) 中使用ng-init

template

HTML code:

angular.module('demo', ['ngRoute'])
 .config(['$routeProvider',
   function($routeProvider) {
    $routeProvider
    .when('/linkOne', {
      controller: 'LinkController',
      template: '<h1 ng-init="functionOne()">Hello world</h1>'
    })
    .when('/linkTwo', {
      controller: 'LinkController',
      template: '<h1 ng-init="functionTwo()">Hello Stackoverflow</h1>'
    });
 }])
 .controller('LinkController', ['$scope', function($scope) {
  $scope.functionOne = function(){
    console.log("Hello");
  }
  $scope.functionTwo = function(){
    console.log("Hello world");
  }
 }]);