繁体   English   中英

使用Angular Factory和lodash从JSON检索一个对象

[英]Retrieving one object from JSON using Angular factory and lodash

我有一个本地存储的JSON,名称为“ Productos”,然后使用UI-router传入$ stateParams,然后使用新页面的控制器以及在多个控制器之间共享的工厂通过其唯一ID查找该对象。

现在,我的控制台检索到传递给工厂函数的正确ID号,但是一旦将相同的ID传递给lodash的_.find,控制台将简单地显示一个现有的[object Object],因此_.find始终返回未定义。 奇怪的是,当我尝试在_.find内console.log 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);
  });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM