在Angular中,我的作用域中有一个对象,它返回很多对象。每个人都有一个ID (它存储在一个平面文件中,所以没有DB,我似乎无法使用ng-resource
)
在我的控制器中:
$scope.fish = [
{category:'freshwater', id:'1', name: 'trout', more:'false'},
{category:'freshwater', id:'2', name:'bass', more:'false'}
];
在我的视图中,我有关于默认情况下使用ng-show
more隐藏的鱼的其他信息,但是当我单击简单的show more选项卡时,我想调用函数showdetails(fish.fish_id)
。我的函数看起来像这样:
$scope.showdetails = function(fish_id) {
var fish = $scope.fish.get({id: fish_id});
fish.more = true;
}
现在,视图中显示的详细信息越多。但是,在搜索完文档之后,我想不出如何搜索那个fish
数组。
那么如何查询数组呢?在控制台中,如何调用调试器才能使用$scope
对象?
发布于 2013-03-25 17:01:55
我知道如果这能帮到你的话。
这是我试着为你模拟的东西。
查看jsFiddle ;)
http://jsfiddle.net/migontech/gbW8Z/5/
创建了一个过滤器,您也可以在'ng-repeat‘中使用它
app.filter('getById', function() {
return function(input, id) {
var i=0, len=input.length;
for (; i<len; i++) {
if (+input[i].id == +id) {
return input[i];
}
}
return null;
}
});
控制器中的用法:
app.controller('SomeController', ['$scope', '$filter', function($scope, $filter) {
$scope.fish = [{category:'freshwater', id:'1', name: 'trout', more:'false'}, {category:'freshwater', id:'2', name:'bass', more:'false'}]
$scope.showdetails = function(fish_id){
var found = $filter('getById')($scope.fish, fish_id);
console.log(found);
$scope.selected = JSON.stringify(found);
}
}]);
如果有任何问题,请让我知道。
发布于 2013-09-27 14:29:30
您可以使用现有的$filter服务。我更新了http://jsfiddle.net/gbW8Z/12/上面的小提琴
$scope.showdetails = function(fish_id) {
var found = $filter('filter')($scope.fish, {id: fish_id}, true);
if (found.length) {
$scope.selected = JSON.stringify(found[0]);
} else {
$scope.selected = 'Not found';
}
}
Angular文档在这里http://docs.angularjs.org/api/ng.filter:filter
发布于 2013-10-04 05:33:22
为了给@migontech的回答和他的地址添加他的评论,你可以“让它更通用”,这里有一个方法。下面将允许您按任何属性进行搜索:
.filter('getByProperty', function() {
return function(propertyName, propertyValue, collection) {
var i=0, len=collection.length;
for (; i<len; i++) {
if (collection[i][propertyName] == +propertyValue) {
return collection[i];
}
}
return null;
}
});
然后,对filter的调用将变为:
var found = $filter('getByProperty')('id', fish_id, $scope.fish);
注意,我删除了一元(+)运算符,以允许基于字符串的匹配...
https://stackoverflow.com/questions/15610501
复制相似问题