2016-03-30 11 views
0

Ich habe die Methode console.log(data) in meinem Controller nur einmal aufgerufen, aber die Ausgabe in der Konsole wird zweimal angezeigt.Angular 1: Doppelter Konsolenausgang

enter image description here

Dies ist die Steuerung:

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(){}; 
}]); 

Und dies ist der Ansicht:

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

Der Router:

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" 
     }); 
    }]); 
+0

'$ scope.loadToDoItems()' gibt nichts zurück. Vermutlich rufen Sie es an oder lösen es irgendwie anders als '$ scope.toDoItems = $ scope.loadToDoItems()' aus, das ausgeführt wird, wenn Ihr Controller erstellt wird. Kann nicht eine 'addToDoItem()' Methode auf Ihrem '$ Scope' entweder – Phil

+0

@Phil Yeah, weil ich es vorübergehend gelöscht. – Kunok

+0

Wo sonst rufen Sie 'loadToDoItems()' auf? Wie wird die Ansicht geladen/aufgenommen? – Phil

Antwort

2

Sie sollten u nicht se ng-controller in Ihrem HTML, weil Sie Routing verwenden. Sie sollten ng-view verwenden.

Überprüfen Sie die Routing-Dokumentation, like here.

Vielleicht wird Ihr Controller einmal aus dem HTML und einmal aus dem Router ausgeführt.

Verwandte Themen