为什么我的ngRoute什么都不做?

时间:2014-03-10 12:52:54

标签: angularjs

我正在尝试设置ngRoute。我不想更新视图,只需在调用路径时对范围执行一些更改。我已经包含了angular-route.js和ngRoute。

angular.module('todo', ['ngRoute','ngStorage']).
    config(function($routeProvider){
        $routeProvider.
            when('/:state',{
                controller: 'aspectController'
            })
    }).
        controller('aspectController', function($scope){
        console.log('aspect');
    })

预期的结果是当我访问任何页面时,例如index.html#/ test我希望控制台写“方面”但没有任何反应,我不会收到任何错误或其他任何错误。

完整的HTML:

<!DOCTYPE html>
<html class="no-js" xmlns:ng="http://angularjs.org" id="ng-app" ng-app="todo">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <title>Todo.txt</title>
        <meta name="viewport" content="width=device-width">

        <link rel="stylesheet" href="css/normalize.min.css">
        <link rel="stylesheet" href="css/main.css">
        <script src="bower_components/angular/angular.js"></script>
        <script src="bower_components/angular-route/angular-route.js"></script>
        <script src="bower_components/ngstorage/ngStorage.js"></script>

        <script src="js/main.js"></script>

    </head>
    <body ngView ng-controller="doController">
        <ul class="aspects">
            <li><a href="#/do">Now</a></li>
            <li><a href="#/deferred">Deferred</a></li>
            <li><a href="#/completed" class="alt">Completed</a></li>
        </ul>
        <div class="checkboxes">
            <div class="checkboxwrapper">
                <input ng-repeat="task in $store.taskarr track by $index" type="checkbox" />
            </div>
        </div>
        <textarea autoexpand class="tasks" ng-change="processTasks()" ng-model="$store.tasks"></textarea>

    </body>
</html>

2 个答案:

答案 0 :(得分:1)

  

我不想更新视图

在我看来,由于这个原因,您不在视图中使用ngView指令。在这种情况下,您将无法访问它,因为只有在ngView可用时,路由更改才会触发控制器。否则它没有意义。此外,如果您不提供templatetemplateUrl控制器也不会被触发。

答案 1 :(得分:0)

如果您想在更改网址时对范围进行一些更改,您应该在控制器中使用状态更改事件:

app.controller('doController', function($scope) {
 $scope.$on("$routeChangeStart", function() {
    console.log('aspect');
  }

}