Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在角度工厂本身中使用过滤器进行迭代_Javascript_Arrays_Angularjs - Fatal编程技术网

Javascript 在角度工厂本身中使用过滤器进行迭代

Javascript 在角度工厂本身中使用过滤器进行迭代,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,我的问题是,我使用一个带有2个控制器的工厂,第一个返回给我一个完整的数组,第二个只想返回一个基于过滤表达式的项。我从url获取最后两个参数,遍历数组并检查哪个数组项具有特定属性的值,然后仅返回该元素及其所有属性和值。到目前为止还没有问题,但是如果我想在工厂内部的声明数组本身的返回树中进行过滤,那么如何在角度上进行过滤呢? 为了获得帮助,我附加了JSFIDLE链接,您可以在html部分找到一些解释: 这里是我的工厂和控制器到目前为止,如果你不想检查链接 portApp.factory("work

我的问题是,我使用一个带有2个控制器的工厂,第一个返回给我一个完整的数组,第二个只想返回一个基于过滤表达式的项。我从url获取最后两个参数,遍历数组并检查哪个数组项具有特定属性的值,然后仅返回该元素及其所有属性和值。到目前为止还没有问题,但是如果我想在工厂内部的声明数组本身的返回树中进行过滤,那么如何在角度上进行过滤呢? 为了获得帮助,我附加了JSFIDLE链接,您可以在html部分找到一些解释:

这里是我的工厂和控制器到目前为止,如果你不想检查链接

portApp.factory("workFactory", function() {
    var selected = [];
    var works = [
    {
        Title: "Sprite",
        subTitle: "",
        Link: "sprite",
        Thumbnail: "img/portfolio02.png",
        Image: "img/ismont.png"
    },
    {
        Title: "Pepsi",
        subTitle: "Kristályvíz",
        Link: "pepsi",
        Thumbnail: "img/portfolio03.png",
        Image: "img/sanofimont.png"
    }
    ];
    return {
        list: function() {
            return works;
        },
        selected: function() {
            return works[0]; // probably selected[]
        }
    };
});

portApp.controller("listController", ["$scope", "workFactory", 
    function($scope, workFactory) {
        $scope.allWorks = workFactory.list();
    }
]);

portApp.controller("itemController", ["$scope", "workFactory", "$stateParams",
    function($scope, workFactory, $stateParams) {
        var detPath = $stateParams.itemLink;
        //$scope.selectedWork = workFactory.selected(detPath);
    }
]);

所选参数应为具有一个参数的函数:

 return {
   list: function() {
     return works;
   },
   selected: function(detPath) {
     //Filter based on the detPath
     selected = works.filter(function(work) {
       return work.Link == detPath;
     });
     return selected;
   }
 };
然后您可以在控制器中调用它:

 portApp.controller("itemController", ["$scope", "workFactory", "$stateParams",
   function($scope, workFactory, $stateParams) {
     var detPath = $stateParams.itemLink;
     $scope.selectedWork = workFactory.selected(detPath);
   }
 ]);

哦,谢谢你,帮了我很大的忙:只有一个问题。。在我返回$scope.selectedWork后。。在我看来,如何访问它?{{selectedWork.Title}}应该足够了吗?只是因为它现在没有以这种方式为我带来任何东西。selectedWork现在是一个数组。如果只需要一个对象,则获取控制器中数组的第一个对象:$scope.selectedWork=workFactory.selectedetpath[0];与此同时,我设法找到了答案:并用$scope检查了内容。$watch'$viewContentLoaded',函数{…,它返回了我想要看到的数据:不幸的是,在我的视图中,没有任何呈现:s这是视图:{{{selectedWork.Title}{{selectedWork.subTitle}}可能键入了什么?