angular underscorejs _find子对象

时间:2015-08-08 20:29:07

标签: angularjs underscore.js

我有一个由角度工厂构建的以下数据结构

tournois {
        tournois { "tournois_id" = "1", "tournois_title"="test",etc..}
                 { "tournois_id" = "2", "tournois_title"="test",etc..}
                 {etc.}

使用underscorejs ._find我无法设法使其基于tournois_id标准工作,我得到未定义意味着没有找到值。

有关正确语法的想法吗?

baclyApp.factory("tournois",function($http){
//Provider qui recupère la liste des tournois
    var urlphp="http://localhost/cordova/mbacly/www/php/";
    var tournois={};   
    $http.get(urlphp+"getTournois.php").success(function(data)
     {
         tournois.tournois = data;
     })
    return {
        list: function(){
            return tournois;
        },
        find: function(cid){
                (tournois, function(tournoi){return tournois.tournois.tournois_id == cid});

        }

    }
})

使用

baclyApp.controller('detailtournoisCtrl', ['$scope','$stateParams', 'tournois', function($scope, $stateParams, tournois) {
        $scope.selectedtournoi = tournois.find($stateParams.cid);
 }]);

2 个答案:

答案 0 :(得分:0)

您的服务功能应使用_.find

<强>工厂

baclyApp.factory("tournois", function($http) {
    //Provider qui recupère la liste des tournois
    var urlphp = "http://localhost/cordova/mbacly/www/php/";
    var tournois = {};
    $http.get(urlphp + "getTournois.php").success(function(data) {
        tournois.tournois = data;
    })
    return {
        list: function() {
            return tournois;
        },
        find: function(cid) {
            return _.find(tournois.tournoi,function(t) {
                return t.tournois_id == cid;
            });
        }
    }
})

答案 1 :(得分:0)

我假设您的数据结构类似于以下内容(基于您上面描述的内容)。

var tournois = {
    "tournois":[
        {"tournois_id":1,"tournois_title":"test"}
        {"tournois_id":2,"tournois_title":"test"}
    ]
};

然后,您将以下列方式使用underscore.js中的_.find函数:

_.find(tournois.tournois, function(t) {return t.tournois_id === 1})

当然,您可以在return语句中删除它,并将最后的静态1替换为您的cid值,如下例所示:

return {
    find: function(cid){
        return _.find(tournois.tournois, function(t) {return t.tournois_id === cid});
    }
}