我有一个名为" Productos"的本地存储的JSON,并使用UI-router传递$ stateParams然后我使用新的页面通过其唯一ID来查找该对象控制器和几个控制器之间共享的工厂。
现在我的控制台检索传递给工厂函数的正确id号,但是一旦将相同的数字传递给lodash' s _find,控制台简单显示现有的[object Object],因此_.find总是返回undefined。奇怪的是,当我尝试在_.find中调试product.log时,它还只返回一个庞大的[object Object]列表。我哪里错了?
.controller('DetalleProductoController',
['$scope', '$stateParams', 'Productos',
function ($scope, $stateParams, Productos) {
console.log($stateParams);
// Recibir el producto por id pasado.
$scope.producto = Productos.findById($stateParams.id);
console.log($scope.producto);
}])
正在使用和调用的服务......
angular.module('MyApp.Services', []);
MyApp.factory('Productos', function (){
console.log("In Producto Service");
var productos = [{
"stockid":"01000001",
"Nombre":"Articulo 1",
"Descripcion":"",
"Precio":140,
"PrecioAnterior":0,
"EtiquetaPrecio":"",
"Puntos":0,
"Familia":"001",
"Grupo":"01",
"Clase":"",
"Destacado":"N",
"Etiquetas":"",
"Rubro":"01",
"TipoArticulo":""},
return {
todos: function() {
console.log("Returning Products from local Service");
return productos;
},
destacados: function() {
return _.filter(productos, function (producto) {
return producto.Destacado == "S";
})
},
findById: function (ProductoId) {
console.log("Id passed into factory: " + ProductoId);
return _.find(productos, function (ProductoId){
console.log("id inside the find block is: " + ProductoId);
return parseInt(productos.stockid) == parseInt(ProductoId);
});
}
}
});
答案 0 :(得分:0)
传递给_.find函数的变量是集合中的一个元素,而不是ID。
所以我认为它应该是这样的:
findById: function (ProductoId) {
return _.find(productos, function (producto) {
return parseInt(pruducto.stockid) === parseInt(ProductoId);
});
}