Функция, запускаемая при вводе ввода, должна запускаться при загрузке страницы

Вы можете убедиться, что обещание заканчивается, прежде чем назначать продукты в контроллере и не запускать 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;
    });
}]);

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

0
задан Daniel 18 January 2019 в 21:58
поделиться

2 ответа

Используя jquery, вы можете сделать что-то вроде этого:

$(document).ready(function(){
    $('.updateButton').prop('disabled',true);
    $('#inputFeild').keyup(function(){
        $('.updateButton').prop('disabled', this.value == "" ? true : false);     
    })
});  

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

0
ответ дан Hith 18 January 2019 в 21:58
поделиться

Я обнаружил, что эта проблема не связана с тем, когда запускается сама функция. Проблема заключается в том, что элементы DOM устанавливаются в мою переменную внутри функции, когда пользователь вводит в поле, а не когда функция вызывается на самом деле.

0
ответ дан Daniel 18 January 2019 в 21:58
поделиться
Другие вопросы по тегам:

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