从服务角度更新视图

时间:2014-12-10 09:01:00

标签: angularjs angularjs-scope

我无法理解为什么在从服务更改模型时未更新视图。 通过console.log();我检查服务返回的数据是否正确,但视图未更新

这是控制器

angular.module('warehouse.controllers', [])

.controller('WarehouseCtrl', function ($scope, $state, $http, $cordovaBarcodeScanner, $cordovaVibration, ProductService) {
$scope.fakeScanBarcode = function() {

    $scope.prodotto = [];

    ProductService.findByBarCode("4033100045844").then(function (product) {

        // Prodotto presente nel DB
        if(product.length > 0){

            $scope.prodotto = product[0];
            $scope.$apply();
            $state.go('warehouse-quantity');

        } else {

            var choiseResult = confirm("Prodotto non trovato.\n\rVuoi aggiungerelo?");

            if (choiseResult == true) {
                $state.go('warehouse-product');
            } else {
                $state.go('warehouse-index');
            }

        }

    });

};
});

这是服务

angular.module('warehouse.services', [])

.factory('ProductService', function($q, $http) {

    var products = [];

    // Scarico tutti i prodotti dal database
    $http.get(URL_INSTALLAZIONE + "web-services/ws-prodotti.php?serial=" + SERIALE)
        .success(function(data) {
            products = data;
        })
        .error(function(data, status) {
            alert("Errore nella ricerca del prodotto.");
        });

    return {

        findAll: function() {
            var deferred = $q.defer();
            deferred.resolve(products);
            return deferred.promise;
        },

        findById: function(productId) {
            var deferred = $q.defer();
            var product = products[productId - 1];
            deferred.resolve(product);
            return deferred.promise;
        },

        findByName: function(searchKey) {
                var deferred = $q.defer();
                var results = products.filter(function(element) {
                var fullName = element.NOME;
                return fullName.toLowerCase().indexOf(searchKey.toLowerCase()) > -1;
            });
            deferred.resolve(results);
            return deferred.promise;
        },

        findByBarCode: function(barcodeKey) {
            var deferred = $q.defer();
            var product = products.filter(function(element) {
                return barcodeKey === element.BAR_CODE;
            });
            deferred.resolve(product);
            return deferred.promise;
        }
    }

});

这是视图

<ion-content>
        <label for="bar_code_prodotto" class="item item-input">
            <input type="text" id="bar_code_prodotto" name="bar_code_prodotto" value="{{prodotto[0].BAR_CODE}}" placeholder="{{prodotto[0].BAR_CODE}}" />
        </label>
        <label for="nome_prodotto" class="item item-input">
            <input type="text" id="nome_prodotto" name="nome_prodotto" value="{{prodotto.NOME}}" placeholder="{{prodotto.NOME}}" />
        </label>
        <label for="descrizione_prodotto" class="item item-input">
            <textarea class="form-control" id="descrizione_prodotto" name="descrizione_prodotto" rows="5" placeholder="Descrizione">{{descrizione}}</textarea>
        </label>
        <img ng-src="{{installationPath}}{{immagine}}">
        <button class="button button-full button-positive" ng-click="addProduct()">Salva</button>
</ion-content>

0 个答案:

没有答案