2017-04-02 3 views
1

Ich arbeite mit Angularjs und Firebase, um eine App zu erstellen, die ein Task-Timer ist. Ich erstelle das Firebase-Objekt und alles funktioniert einwandfrei, außer wenn ich versuche, task.newTask auf der Konsole zu loggen. Hier ist ein bisschen meinen Code (bitte beachten Sie, das der Code nicht alles):type error: Kann den Wert 'name' von undefined nicht lesen

//HTML 
<aside id="sidebar"> 
    <section id="widget_1"> 
     <h2 class="titles">Task History:</h2> 
     <input id="text-field" type="text" ng-model="taskText" /> 
     <input id="task-button" type="button" value="Add Task" ng-click="addTask()" /> 
    </section> 

    <section id="widget_2"> 
     <h2 class="titles">Task List:</h2>    
     <table> 
      <tr ng-repeat="task in timer_tasks | orderBy: '-taskText'"> 
       <td>{{ task.taskText }}</td> 
      </tr>     
     </table> 
    </section> 
</aside> 

//Controller: 
(function() { 
'use strict' 

function HomeCtrl($scope, $firebaseArray, $interval) { 
    console.log('I see you home controller ... you are loaded sir!!!') 

    var timerRef = firebase.database().ref().child('timer_tasks');   
    $scope.timer_tasks = $firebaseArray(timerRef); 


    $scope.addTask = function() { 
     $scope.timer_tasks.$add({ 
      taskText: $scope.taskText, 
      newTask: true 
     }).then(function (timerRef) { 
      $scope.taskText = ''; 
     }); 
    }; 


console.log(task.newTask); 

Auf Seite Last der Fehler aufkommt bei console.log(task.newTask);

Jede Hilfe wäre toll. Danke im Voraus!

+0

Die korrekte Fehlermeldung hier ist eigentlich "Aufgabe ist nicht definiert" ... Danke! –

+1

'task' ist nicht im Controller definiert, das Element, das Sie in ng-repeat verwendet haben, wird nicht automatisch an den Controller gebunden. Sie benutzen entweder ng-select oder ng-click etc. –

+0

Ich benutze ng-click = "addTask()" auf der Schaltfläche Add Task. Ist das falsch? Oder nicht genug? ... wo sollte ich ng-click verwenden, wenn das nicht funktioniert? Thx –

Antwort

0

Wenn ich richtig verstanden habe, müssen Sie Lehrbuch Wert in Controller, die $scope.timer_tasks bauen und später abgerufen werden können, wieder in Sicht in ng-repeat abgerufen werden.

Ansicht

<aside id="sidebar"> 
    <section id="widget_1"> 
    <h4 class="titles">Task History:</h4> 
     <input id="text-field" type="text" ng-model="taskText" /> 
     <input id="task-button" 
     type="button" 
     value="Add Task" 
     ng-click="addTask(taskText)"/> 
    </section> 
</aside> 

Script

myApp.controller('myCtrl', function($scope) { 
    $scope.addTask = function (value) { 
     console.log(" clicked : "+value); 
    }; 
}); 

All i wurde der Wert auf addTask klicken von ng-Modell binden tat ng klicken und wie Sie können nun sehen, haben Sie diesen Wert in addTask Funktion.

Verwandte Themen