我无法理解为什么在从服务更改模型时未更新视图。 通过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>