说我有一个对象数组:
$scope.objArr = [{key:1,value:'value1'},{key:2,value:'value2'},{key:3,value:'value3'}];
应该映射到key
的变量。例如:
$scope.a = 3;
在Controller中我都希望在View中显示value
。上面的例子应该给我" value3。"
在不创建其他功能的情况下,我会执行以下操作:
<span ng-repeat="obj in objArr | filter:{key:a}:true">{{obj.value}}</span>
它有效,但使用ng-repeat
感觉不对。有没有更好的方法(没有创建另一个功能)?
修改
这是我使用的完整代码:
<body ng-app="myApp">
<div ng-controller="MyController">
<span ng-repeat="obj in objArr | filter:{key:a.test}:true">{{obj.value}}</span>
<input ng-model="a.test"/>
</div>
</body>
控制器:
var myApp = angular.module('myApp',[]);
myApp.controller('MyController',function($scope){
$scope.objArr = [{key:1,value:'value1'},{key:2,value:'value2'},{key:3,value:'value3'}];
$scope.a = {test:2}
});
它最初显示&#34; value2&#34;,但在更改输入字段的值后没有显示任何内容。那是为什么?
答案 0 :(得分:0)
你可以试试这个
您可以在控制器中创建方法
var myApp = angular.module('myApp',[]);
myApp.controller('MyController',function($scope){
$scope.objArr = [{key:1,value:'value1'},{key:2,value:'value2'},{key:3,value:'value3'}];
$scope.callSearch = function(num) {
var abc = filterFilter($scope.objArr, {id: num});
$scope.item= abc[0].value;
};
});
在您的视图中,您可以执行此操作
<div ng-controller="MainController">
<input ng-model="search"/>
<button ng-click="callSearch(search);">Search</button>
{{item}}
</div>