2015-07-16 2 views
0

im пытается узнать Угловой. Вот что я пытаюсь сделать:

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

Использование кнопки «Show-List» с функцией ng-click, но требует нажатия кнопки.

Вот мой подход для получения его сделать автоматический:

Я хочу, чтобы список в моем DOM автоматически обновляется по изменению списка.

$scope.$watch('updatedList', function() { 

     // CHECK IF WORKS 
     console.log($scope.updatedList); 

     // APPLY TO DOM 
     $timeout(function(){ 

      $scope.$apply(function() { 
       $scope.watchList = $scope.updatedList; 
      }); 

     }, 1000) 
    }); 

Консоль не показывает ошибку и выдает correc значения:

Объект {city.3: "Герат", city.7: "Haag", city.10: "Тилбург" ......}

В моем DIV является следующее:.

<ul> 
       <li ng-repeat="y in updatedList">{{ y }}</li> 
      </ul> 
      <ul> 
       <li ng-repeat="a in watchList">{{ a }}</li> 
      </ul> 

Сначала для NG-Click-версии (которая работает по щелчку) второй за $ рамки $ смотреть

Извините за множество вопросов, но я действительно борюсь с Angular-Docs.

EDIT:

Функция, которая добавляет Citys к списку:

$scope.addToList = function(name,id) { 

     var cityToAdd = name; 
     var cityToAddID = id; 

     // ADD A CITY TO THE COOKIE -> WORKS 
     $cookies.put('city.' + cityToAddID, cityToAdd); 
     $scope.newList = $cookies.getAll(); 
     $scope.addToListMessage = cityToAdd + " wurde hinzugefügt"; 

     // Show short INFONOTICE 
     window.setTimeout(function() { 
      $scope.$apply(function() { 
       $scope.addToListMessage = ""; 

      }); 
     }, 1000); 
      // Update the List 
      $scope.updateList(); 

    }; 

Второй Functions -> получает значения из печений и помещает их в массив:

$scope.updateList = function() { 

     var allCitys = $cookies.getAll(); 


     // PUT ALL INTO AN ARRAY -> WORKS 
     var favouritesFromCookie = []; 
     $.each(allCitys, function(index, value) { 

      if (index.indexOf('city.') == 0) { favouritesFromCookie.push(value) } 
     }); 

     // PUT THE ARRAY OF CITYS INTO A SCOPE_VARIABLE 

      $scope.updatedList = favouritesFromCookie; 



    }; 
+0

Это было бы яснее, если бы вы включили больше своего кода. Откуда идет список городов? Получаете ли вы это из HTTP-запроса? Немного больше информации поможет здесь. – DWDuck

+0

не нужно '$ .apply()' inside '$ timeout()', поскольку он будет внутренне вызывать '. $()'. Что изменит 'newList'? Это часть нужно сосредоточиться на – charlietfl

+0

Хорошо, я добавлю код за секунду ... – Dyon

ответ

0

Ваш $ области видимости .updatedList должен быть массивом, который будет использоваться в ng-repeat.

+0

updatedList уже является массивом, возможно, вы запутываете его с помощью updateList, который является функцией? –

+0

Хорошо, и это работает на ng-click. Просто не работает автоматически. Массив выполнен в «favouritesFromCookies». – Dyon

0

Вы не должны напрямую писать список в выражении. Попробуйте это

<ul> 
    <li ng-repeat="y in watchList">{{ y.city }}</li> 
    <li ng-repeat="y in watchList">{{ y.yourListItem}}</li> 
</ul> 
Смежные вопросы