2017-01-18 12 views
0

私はプログラミングには新しく、非常に不満な問題があります。私は本当に答えを見つけるのに数時間を費やしましたが失敗しました。AngularJSは配列内のオブジェクトのID-Sを作成します

基本的に私はMaster Detailed todoのリストに取り組んでいます。私のtodosは配列内のオブジェクトです。私はマスターディテールのためにさまざまなビューを作成する必要がありますが、オブジェクトをIDで区切ることはできません。私はでルートを作成しようとすると、この場合

myTodoList.controller("mainController", ['$scope', function($scope, $route, $routeParams, $location) { 
    $scope.todos = [{ 
     'id': 0, 
     'title': '', 
     'done': false, 
     'priority': '', 
     'deadLine': '', 
    }]; 

    $scope.$route = $route; 
    $scope.$location = $location; 
    $scope.$routeParams = $routeParams; 
    $scope.params = $routeParams; 
    $scope.todos = []; 

    $scope.addTodo = function(title, priority, deadLine, id) { 
     $scope.todos.push({ 
      'id': $scope.todos.id, 
      'title': $scope.newTodo, 
      'done': false, 
      'priority': $scope.newPriority, 
      'deadLine': $scope.newDeadLine 
     }); 
     $scope.newTodo = '' 
     $scope.newPriority = '' 
     $scope.newDeadLine = '' 
     $scope.todos.id++; 
    } 

:ここ

は私AngularJSコードであるID、それはNAN(私はquess非数)であると述べています。私は、コードを変更した場合でも:

$scope.addTodo = function(title, priority, deadLine, id) { 
     $scope.todos.push({ 
      'id': 0, 
      'title': $scope.newTodo, 
      'done': false, 
      'priority': $scope.newPriority, 
      'deadLine': $scope.newDeadLine 
     }); 
     $scope.newTodo = '' 
     $scope.newPriority = '' 
     $scope.newDeadLine = '' 
     $scope.todos.id++; 
    } 

これ、そう'id': 0、すべてのドスは、IDのように番号0を取得します。私はこのことを正しく行うことができないので、3日後です。

答えて

1

最後のIDを保持するために配列を使用する理由はわかりませんが、問題はIDを初期化していないことです。

var id; 
id++; //NAN 

Javascriptが非常にあなたが見ることができるように、あなたは配列にプロパティを追加し、任意のエラーを取得せずに未定義の変数に演算子を使用することができを失うことです。あなたの場合、アレイを初期化した直後に$scope.todos.id = 0;が問題を解決するはずです。

しかし最後のIDを別の変数に保持する方が良いでしょう。スコープ内にある必要はありません。ちょうどvar lastId = 0;lastId++で十分です。

+0

ありがとうございます!それは多くの助けとなりました。私はそのようなことを試したことを覚えていますが、ある時点でそれを台無しにしてしまったと思います。私は別の問題を抱えています。私の表現は私が取り組んでいる新しい視点では機能しません。しかし、私は解決策を見つけるためにインターネットに飛び込むつもりです。 :) 本当にありがとう、私は本当にありがとう! –

+0

問題はありません、私は助けることができてうれしいです。プログラムを学ぶことは時折非常に不満になるかもしれませんが、一度それを得ると、それは素晴らしいです:) –

0

$scope.todosは配列なので、'id': $scope.todos.idという行は機能しません。用

変更は:

$scope.todos.push({ 
    'id': $scope.todos[0].id // <-- here 
    'title': $scope.newTodo, 
    'done': false, 
    'priority': $scope.newPriority, 
    'deadLine': $scope.newDeadLine 
}); 

配列の最初の要素を使用するsynthaxです。

関連する問題