我有一个本地存储的名为“Productos”的 JSON,并使用 UI-router 传入 $stateParams,然后使用新页面的 Controller 和在多个 Controller 之间共享的工厂通过其唯一 ID 来查找该对象。
现在,我的控制台检索到传递到工厂函数中的正确 ID 号,但是一旦将相同的编号传递到 lodash 的 _.find 中,控制台就会简单地显示现有的 [object Object],因此 _.find 始终返回未定义。奇怪的是,当我尝试console.log _.find 内的productos 数组时,它也只是返回一个巨大的[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);
});
}
}
});
最佳答案
传递给 _.find 函数的变量是集合中的元素之一,而不是 ID。
所以我认为应该是这样的:
findById: function (ProductoId) {
return _.find(productos, function (producto) {
return parseInt(pruducto.stockid) === parseInt(ProductoId);
});
}
关于javascript - 使用 Angular 工厂和 lodash 从 JSON 检索一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30310122/