gpt4 book ai didi

javascript - AngularJS 搜索对象数组

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:33:29 25 4
gpt4 key购买 nike

我的 Controller 中有一个对象数组,例如:

$scope.fields = [
{fieldName:'houseNum',fieldLabel:'House Number',disabled:false},
{fieldName:'street',fieldLabel:'Street',disabled:false},
{fieldName:'city',fieldLabel:'City',disabled:true},
{fieldName:'state',fieldLabel:'State',disabled:true},
]

在 HTML 中,我希望能够获得一个 fieldLabel,其中 fieldName=='street'。 AJS 文档假定每个过滤器案例都应该在 ng-repeat 的上下文中——但在我的情况下不是这样,因为我只是试图从基于“fieldName”的“fields”数组中提取一个“fieldLabel”

例如:HTML

{{ fieldLabel in fields | filter : {fieldName:'street'} : true}}

我怎样才能做这样的事情 - 或者我是否需要创建自己的指令并将 $scope.fields 传递给指令并手动循环?

最佳答案

你可以这样做:

{{ (fields | filter : {fieldName:"street"} : true)[0].fieldLabel}}

(fields | filter : {fieldName:"street"} : true) 返回过滤项目数组获取第一个 [0] 并访问 该对象的 fieldLabel 属性。

angular.module('app', []).controller('ctrl', function($scope) {
$scope.fields = [{
fieldName: 'houseNum',
fieldLabel: 'House Number',
disabled: false
}, {
fieldName: 'street',
fieldLabel: 'Street',
disabled: false
}, {
fieldName: 'city',
fieldLabel: 'City',
disabled: true
}, {
fieldName: 'state',
fieldLabel: 'State',
disabled: true
}, ]
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller="ctrl">
{{ (fields | filter : {fieldName:"street"} : true)[0].fieldLabel}}
</div>

虽然更好的选择是从 Controller 本身设置属性,这样过滤器就不会在每个摘要周期中运行。

function getFieldByName(prop){
var field = {};
//Or just use a for loop and break once you find a match
$scope.fields.some(function(itm){
if(itm.fieldName === prop){
field = itm;
return true;
}
});
//Or you could inject $filter as well an do as below
//return $filter('filter')($scope.fields,{fieldName:"street"})[0] || {}
return field;
}

//Somewhere
$scope.streetField = getFieldByName('street');

在 View 中:

{{streetField.fieldLabel}}

Array.some

关于javascript - AngularJS 搜索对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30627718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com