2015-04-26 6 views
1

У меня есть дисплей из 3 столбцов, чтобы имитировать панель для канбана. Каждый столбец выполняет ng-repeat на одном $ scope.list. Затем я фильтрую каждый столбец, чтобы включить в него те, которые я хочу. Однако теперь я хочу, чтобы можно было перетащить элемент из одного столбца в другой, а при отбрасывании элемента выполнить вызов $ http в мой rest api, который будет обновлять этот элемент.Невозможно получить доступ к вложенному массиву объекта области

Я посмотрел на некоторые инструменты, как это - http://codef0rmer.github.io/angular-dragdrop/#/

Но, насколько я могу сказать, что это не любая помощь мне, как мои данные все в одном списке.

Список, содержащий все элементы, - $ scope.board, и это результат JSON.

{ 
    "_id":"553b9fc4fee8d25ceeba6c92", 
    "boardAuthor":"553b9e64fee8d25ceeba6c91", 
    "title":"Board title", 
    "description":"Whatever", 
    "__v":0, 
    "boardTickits":[ 
     {}, 
    ] 
    } 

Я думал, один подход может быть разделен $ scope.board на отдельные массивы, но я не могу показаться, чтобы получить доступ к вложенному массиву.

for(i = 0; i < $scope.board.boardTickits.length; i++) { 
    if($scope.board.boardTickits.category == 1) { 
     $scope.todoCol = $scope.board.boardTickits[i]; 
    } else if ($scope.board.boardTickits.category == 2) { 
     $scope.doingCol = $scope.board.boardTickits[i]; 
    } else if($scope.board.boardTickits.category == 3) { 
     $scope.doneCol = $scope.board.boardTickits[i]; 
    } 
} 

У меня ошибка при попытке получить длину вложенного массива.

Если кто-нибудь предоставит некоторое представление о доступе к вложенным массивам, это было бы здорово, ура!

ответ

1

Потому что вы делаете .length от undefined объект $scope.board.boardTickits. Вы должны изменить вас for цикл условие форма $scope.board.boardTickits.length к $scope.board.length

for(i = 0; i < $scope.board.length - 1; i++) { 
    if($scope.board.boardTickits.category == 1) { 
     $scope.todoCol = $scope.board.boardTickits[i]; 
    } else if ($scope.board.boardTickits.category == 2) { 
     $scope.doingCol = $scope.board.boardTickits[i]; 
    } else if($scope.board.boardTickits.category == 3) { 
     $scope.doneCol = $scope.board.boardTickits[i]; 
    } 
} 
+0

Спасибо за быстрый ответ! Я теперь получаю другую ошибку, но - 'TypeError: Не могу прочитать свойство '0' неопределенного'. Любая идея, что это может означать? – frank

+0

@frank, который был моим плохим, взгляните на udpate –

+0

Да, теперь цикл правильный, но то, что я думал, что цикл был неправильным, в первую очередь состоит в том, что $ scope.todoCol пуст, но этого не должно быть, потому что в $ scope.board.boardTickits есть 3 объекта, которые соответствуют критериям категории == 1. – frank

Смежные вопросы