使用 Angular 工厂和 lodash 从 JSON 检索一个对象
Retrieving one object from JSON using Angular factory and lodash
我在本地存储了一个名为 "Productos" 的 JSON,并使用 UI-router 传入一个 $stateParams,然后使用它通过其唯一 ID 查找该对象新页面的控制器和在多个控制器之间共享的工厂。
现在我的控制台检索传递给工厂函数的正确 ID 号,但是一旦将相同的编号传递给 lodash 的 _.find,控制台简单地显示一个现有的 [object Object],因此 _.find 始终 returns 未定义。奇怪的是,当我尝试 console.log _.find 中的 productos 数组时,它也只是 returns 一个巨大的 [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);
});
}
我在本地存储了一个名为 "Productos" 的 JSON,并使用 UI-router 传入一个 $stateParams,然后使用它通过其唯一 ID 查找该对象新页面的控制器和在多个控制器之间共享的工厂。
现在我的控制台检索传递给工厂函数的正确 ID 号,但是一旦将相同的编号传递给 lodash 的 _.find,控制台简单地显示一个现有的 [object Object],因此 _.find 始终 returns 未定义。奇怪的是,当我尝试 console.log _.find 中的 productos 数组时,它也只是 returns 一个巨大的 [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);
});
}