Angular 1:双控制台输出

时间:2016-03-30 01:33:20

标签: angularjs

我只在控制器中调用方法console.log(data)一次,但控制台中的输出显示两次。

enter image description here

这是控制器:

taskAppControllers.controller('ToDoCtrl', ['$scope',
  function($scope){
    $scope.loadToDoItems = function(){
      var data = ls.get("toDoData");
      if (data == null) data = [];
      console.log(data);
    }
    $scope.toDoItems = $scope.loadToDoItems();
    $scope.addToDoItem(){};
}]);

这就是观点:

<div ng-controller="ToDoCtrl">
  <form>
    <input type="text" ng-model="toDoItem">
    <input type="submit" ng-click="addToDoItem()">
  </form>
</div>

路由器:

var TaskApp = angular.module('TaskApp', [
  'ngRoute',
  'taskAppControllers'
]);

TaskApp.config(['$routeProvider',
  function($routeProvider){
  $routeProvider.
      when('/home', {
        templateUrl: "partials/home.html",
        controller: "HomeCtrl",
        title: 'Home',
        icon: 'ion-android-menu',
        link: '#/main-menu'
      }).
      when('/main-menu', {
        templateUrl: "partials/main-menu.html",
        controller: "MainMenuCtrl",
        title: 'Main menu',
        icon: 'ion-close',
        link: '#/'
      }).
      when('/todo', {
        templateUrl: "partials/todo.html",
        controller: "ToDoCtrl",
        title: 'To do',
        icon: 'ion-close',
        link: '#/main-menu'
      }).
      otherwise({
        redirectTo: "/home"
      });
  }]);

1 个答案:

答案 0 :(得分:2)

您不应在HTML中使用ng-controller,因为您使用的是路由。您应该使用ng-view

检查路由文档like here

也许你的控制器是从HTML执行一次,一次是从路由器执行。