Перезагрузка угловых / ионных повторов

0

Я уже читал некоторые дискуссии об этой проблеме, но никто не работает для меня.

У меня есть контроллер

.controller('TestFriendCtrl', ['$scope', 'APIUser', function($scope, APIUser) {

        $scope.data.friends = [{username: 'test'}];

        $scope.change = function(friend) {
            APIUser.find(friend, function(success, data){
                if (success) {
                    $scope.data.friends = data;
                    console.log($scope.data.friends);
                }
            })
        }
    }]);

Я также пробовал

.controller('TestFriendCtrl', ['$scope', '$timeout', 'APIUser', function($scope, $timeout, APIUser) {

    $scope.friends = [{username: 'coucou'}];

    $scope.change = function(friend) {
        APIUser.find(friend, function(success, data){
            if (success) {
                $timeout(function() {
                    $scope.friends = data;
                    console.log($scope.friends);
                } );
            }
        })
        console.log($scope.friends);
    }
}]);

а также

.controller('TestFriendCtrl', ['$scope', '$timeout', 'APIUser', function($scope, $timeout, APIUser) {

    $scope.friends = [{username: 'coucou'}];

    $scope.change = function(friend) {
        APIUser.find(friend, function(success, data){
            if (success) {
                $scope.friends = angular.copy(data);
            }
        })
        console.log($scope.friends);
    }
}]);

Во всех случаях console.log($scope.friends); вернуть ожидаемое значение

И представление

<ion-view class="main-page">
    <ion-content>
        <h1>Friend</h1>
        <label class="item item-input">
            <i class="icon ion-search placeholder-icon"></i>
            <input ng-model="friend" name="friend" type="search" placeholder="Search" ng-change="change(friend)">
        </label>
        {{ data.friends[0].username }}
        <ion-list ng-controller="TestFriendCtrl" >
            <ion-item ng-repeat="friend in data.friends" class="item-thumbnail-left">
                <p>{{friend.username}}</p>
            </ion-item>
        </ion-list>
    </ion-content>
</ion-view>

$scope.friend хорошо обновляется на выходе консоли, но мой список не изменяется.

Я попытался добавить $scope.$apply но у меня уже есть $digest already in progress

Теги:
ionic

3 ответа

0

Комментарий, указывающий, что angular.copy() был почти правильным, просто отсутствовал второй параметр. Используя angular.copy() (или аналогично Lodash's _.assign()), вы не потеряете ссылку на исходный экземпляр массива. См. Этот ответ или этот ответ для дальнейшего объяснения.

.controller('TestFriendCtrl', ['$scope', 'APIUser', function($scope, APIUser) {
    $scope.friends = [{username: 'test'}];

    $scope.change = function(friend) {
        APIUser.find(friend).$promise.then(function(success, data){
            if (success) {
                angular.copy(data, $scope.friends);
                console.log($scope.friends);
            }
        }, function (err) {
            console.log(err);
        )};
    }
}]);
0

После вашего последнего обновления, я предполагаю, что может иметь ссылку на. (Точка). В google есть много сообщений, которые можно легко найти, объясняя, почему это не так, чтобы иметь прямую модель без dd-dilimiter.

Попробуйте изменить свою модель с помощью $scope.myDatas.friends = data; и измените ваш вызов ng-repeat на ng-repeat="friend in myDatas.friends"

0

Вы можете попробовать это, пока я не знаю, что делает APIUser:

.controller('TestFriendCtrl', ['$scope', 'APIUser', function($scope, APIUser) {
    $scope.friends = [{username: 'test'}];

    $scope.change = function(friend) {
        APIUser.find(friend).$promise.then(function(success, data){
            if (success) {
                $scope.friends = data;
                console.log($scope.friends);
            }
        }, function (err) {
            console.log(err);
        )};
    }
}]);

Ещё вопросы

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