Angular $ scope не получает переменные

0

У меня есть простой html файл, который делает поиск в Algolia и возвращает результат. Я могу утешить результат, но не могу получить доступ к $ scope.users из представления. Как я могу захватить этот объект $ scope.users.

вот мой файл app.js

    var myApp = angular.module('myApp', []);

    myApp.controller('usersController', function($scope) {
        $scope.users = [];

        var client = algoliasearch('my_app_id', 'my_app_key');
        var index = client.initIndex('getstarted_actors');

        index.search('john', function searchDone(err, content) {
          $scope.users.push(content.hits);
          console.log(content.hits);
        });

    });

Вот мой файл html view

<div class="results" ng-controller="usersController">
    <div ng-repeat="user in users">
        <h3>{{ user.name }}</h3>
    </div>  
</div>

note: атрибут ng-app = "myApp", указанный в теге html.

  • 0
    Это выглядит правильно.
  • 0
    что печатает {{user}}, я полагаю, что у вас нет свойства name для пользователя.
Показать ещё 2 комментария
Теги:
scope

3 ответа

1

Это, скорее всего, потому, что ваш вызов index.search не запускает цикл Angular $digest - вручную запускает один из них либо $apply либо $timeout

index.search('john', function searchDone(err, content) {
  $scope.users.push(content.hits);
  $scope.$apply();
});

$apply() может генерировать $digest already in progress ошибок - другой способ с $timeout

myApp.controller('usersController', function($scope, $timeout) {
    index.search('john', function searchDone(err, content) {
        $timeout(function() {
            $scope.users.push(content.hits);
        });
    });
});
  • 0
    $scope.$evalAsync() я бы сказал: P вместо $ timeout
  • 0
    нет необходимости в $timeout поскольку он оборачивает вызов $apply docs.angularjs.org/api/ng/service/$timeout, который можно отключить, установив invokeApply в false (по умолчанию true)
Показать ещё 3 комментария
0

algoliasearch не похож на инъецированную услугу и, следовательно, не является родной для угловой структуры. Попробуйте вызвать $scope.$apply().

0

попробуйте вызвать $scope.$apply() для обновления привязок

index.search('john', function searchDone(err, content) {
  $scope.users.push(content.hits);
  console.log(content.hits);
  $scope.$apply();
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню