我正在尝试设置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>
答案 0 :(得分:1)
我不想更新视图
在我看来,由于这个原因,您不在视图中使用ngView
指令。在这种情况下,您将无法访问它,因为只有在ngView
可用时,路由更改才会触发控制器。否则它没有意义。此外,如果您不提供template
或templateUrl
控制器也不会被触发。
答案 1 :(得分:0)
如果您想在更改网址时对范围进行一些更改,您应该在控制器中使用状态更改事件:
app.controller('doController', function($scope) {
$scope.$on("$routeChangeStart", function() {
console.log('aspect');
}
}