@modernstyle
Code GOD

Почему Angular не считает объекты?

Я получаю объекты из фабрики, фабрика тянет их из Firebase.

Вот так выглядит контроллер (частично):

$scope.customers = [];

function getTotal() {
  $scope.custTotal = $scope.customers.length;
}

function init() {
  $scope.customers = customersFactory.getCustomers();
  getTotal();
}

init();


Во вьюхе {{custTotal}}

Проблема в том, что $scope.customers.length ничего не возвращает, вообще, тогда как $scope.customers возвращает массив:

[{"city":"Rutten","id":1,"joined":"2011-05-02","name":"Tanner","orders":[{"id":2,"product":"Left shoe","total":2.95}],"$id":"0","$priority":null},{"city":"San Francisco","id":2,"joined":"2011-12-12","name":"Joffrey","orders":[{"id":1,"product":"Right shoe","total":4.95},{"id":2,"product":"Left shoe","total":9.95}],"$id":"1","$priority":null}]


Если поместить во вью {{customers.length}} все работает. Почему не работает length внутри функции?

Думал что проблема в асинхронности загрузки, пробовал использовать then и $watch, но ничего не меняется.
  • Вопрос задан
  • 2214 просмотров
Пригласить эксперта
Ответы на вопрос 1
По мне так у Вас очень странное решение. Я бы сделал
function getTotal() {
  return $scope.customers.length;
}

И во вьюхе использовал {{getTotal()}} . А у Вас получается, что надо вызывать getTotal каждый раз, когда изменяется массив customers.
+ getTotal по логике - получить количество чего-то, а у вас она ничего не возвращает.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы