2017-04-02 10 views
1

私はAngularjsとfirebaseを使ってタスクタイマーのアプリを作成しています。 firebaseオブジェクトを作成して、コンソールにtask.newTaskを記録しようとするときを除いて、すべて正常に動作します。ここに私のコードのビットは、(これは、すべてのコードではありません注意してください)です。エラーは素晴らしいことだconsole.log(task.newTask);タイプエラー:定義されていない値 'name'を読み取ることができません

すべてのヘルプで起動したページロードで

//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); 

。前もって感謝します!

+0

実際に正しいエラーメッセージは「タスクが定義されていません」です...ありがとうございます! –

+1

'task'がコントローラに定義されていないため、ng-repeatで使用した要素はコントローラに自動的に戻されません。 ng-selectまたはng-clickなどを使用します。 –

+0

[タスクの追加]ボタンでng-click = "addTask()"を使用しています。それは間違っていますか?または十分ではない? ...それがうまくいかない場合、どこでng-clickを使うべきですか? Thx –

答えて

0

正しく理解されている場合は、$scope.timer_tasks以降を構築するコントローラで教科書の値を取得し、後でng-repeatに表示する必要があります。

ビュー

<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> 

スクリプト

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

私はaddTask時に値をバインドしてなかったすべては、NG-クリックしてNG-モデルからクリックして、あなたが今見ることができるように、あなたはaddTaskでその値を持っています関数。

関連する問題