AngularJS - Ng-Repeat не обновляет

Если в числовых кадре НЕ все одинаковые столбцы, попробуйте следующее:

   df = pd.DataFrame.from_dict(map(dict,df_list))
0
задан ihunter2839 13 July 2018 в 23:59
поделиться

3 ответа

Вы можете убедиться, что обещание заканчивается, прежде чем назначать продукты в контроллере и не запускать fetchAll несколько раз. Вы можете изменить службу:

serv.factory('shopService', function($q) {
    //create the shop client as service varible
    var client = window.ShopifyBuy.buildClient({
        domain: 'xxxxxxx.myshopify.com',
        storefrontAccessToken: 'xxxxxxxxxxxxxxxxx'
    });
    var products = [];
    var fetchAllCompleted = false;

    function getProducts() {
        var deferred = $q.defer();

        if (fetchAllCompleted) {
            deferred.resolve(products);
        } else {
            client.product.fetchAll().then((products_complete) => {
                //do things and get the products ready
                products.push(item);
                fetchAllCompleted = true;
                deferred.resolve(products);
            });
        }

        return deferred.promise;
    }


    return {
        getProducts: getProducts
    }
});

Затем в контроллере

serviceApp.controller('CartController', ['shopService', function CartController(shopService) {
    //create a reference to the service variable
    shopService.getProducts().then(function(products) {
        this.products = products;
    });
}]);

Это должно устранить ваши проблемы.

1
ответ дан BShaps 17 August 2018 в 12:05
поделиться

Если я правильно понимаю ваш вопрос, у вас мало обходных решений. Один из них - использовать $apply() в вашем вызове ajax, что он будет делать? Иногда, когда обещание возвращается, значения не обновляются угловыми. и он вернет пустой объект. Вызвав $apply(), вы можете обновить область действия. И второе обходное решение состоит в том, чтобы сначала вызвать службу и отправить ваш запрос, а затем сделать функцию возврата, которая вернет объект, который вы только что вызвали в службе выше. концепция Setter и Getter, я использую этот подход, я использую одну функцию, чтобы получить данные, а другой - для получения данных. Последнее, что вы можете попробовать, - подождать, пока данные не попадут в ваш объект, а затем вернут его. когда вы используете ng-repeat, если служба вызывается каждый раз, ng-repeat не будет работать, сначала получите все данные в одном объекте, а затем вызовите это obj, имея в виду, что вы будете звонить только один раз в контроллер. и эта служба вернет вам ваши данные до ng-repeat.

0
ответ дан ahsan ayub 17 August 2018 в 12:05
поделиться

попытайтесь убедиться, что служба запущена и запущена / возвращена базовые данные .. затем проверьте этот пример:

https://plnkr.co/edit/l7lGPRIs0ZuDWpVK2pX8?p=preview

Угловой JS

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <link href="animations.css" rel="stylesheet" type="text/css">
  <script src="//code.angularjs.org/snapshot/angular.min.js"></script>
  <script src="//code.angularjs.org/snapshot/angular-animate.js"></script>
  <script src="script.js"></script>
    </head>
    <body ng-app="ngRepeat">
      <div ng-controller="repeatController">
      I have {{friends.length}} friends. They are:
      <input type="search" ng-model="q" placeholder="filter friends..." aria-label="filter friends" />
      <ul class="example-animate-container">
        <li class="animate-repeat"
        ng-repeat="friend in friends">
          [{{$index + 1}}] {{friend.name}} who is {{friend.age}} years old.
        </li>
        <li class="animate-repeat" ng-if="results.length === 0">
          <strong>No results found...</strong>
        </li>
      </ul>
    </div>
    </body>
    </html>

Объект JS:

(function(angular) {
  'use strict';
angular.module('ngRepeat', ['ngAnimate']).controller('repeatController', function($scope) {
  $scope.friends = [
    {name:'John', age:25, gender:'boy'},
    {name:'Jessie', age:30, gender:'girl'},
    {name:'Johanna', age:28, gender:'girl'},
    {name:'Joy', age:15, gender:'girl'},
    {name:'Mary', age:28, gender:'girl'},
    {name:'Peter', age:95, gender:'boy'},
    {name:'Sebastian', age:50, gender:'boy'},
    {name:'Erika', age:27, gender:'girl'},
    {name:'Patrick', age:40, gender:'boy'},
    {name:'Samantha', age:60, gender:'girl'}
  ];
});
})(window.angular);
-1
ответ дан Mahmoud Sayed 17 August 2018 в 12:05
поделиться
  • 1
    Бэкэнд успешно возвращает данные - я могу использовать console.log в контроллере и получать желаемый результат. Я уже реализовал это решение, в котором данные хранятся в переменной $ scope контроллера, но моя цель - перемещение данных в службу - это обмен информацией между несколькими контроллерами. – ihunter2839 14 July 2018 в 00:08
  • 2
    Статический список - это не то же самое, что обещание. – BShaps 15 July 2018 в 00:32
Другие вопросы по тегам:

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