javascript - 使用 Angular 工厂和 lodash 从 JSON 检索一个对象

标签 javascript json angularjs lodash

我有一个本地存储的名为“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/

相关文章:

java - 在 Java 中处理 REST 结果 (json) 中不一致的数据类型

java - 如何使 JSONObject toString 转义 unicode 字符?

javascript - 带括号的输入的 AngularJS 验证错误

javascript - AngularJS 和 null 选择值取决于选择顺序

javascript - 如何等待 Angular http方法完成

JavaScript + div 标签

javascript - 一次导入javascript库

java - 格式错误的 JSON 字符串能否成功解析?

javascript - 在jaydata中循环插入数据

Javascript:将函数作为参数添加到预定义的回调函数中