这看起来应该很容易,但我是棱角分明的新手并没有很好地理解这个概念.我希望在数据集上运行ng-repeat,然后能够使用完全相同的数据集根据选择框中的选定选项过滤结果.
我创建了一个选项数组,并将它们分配给变量$ scope.OurTeamCategories.
angular.module('app', [])
.controller('Main', ['$scope', function($scope) {
$scope.ourTeamCategories = [
{"id":18,"title":'Management'},
{"id":19,"title":'Administration'},
{"id":21,"title":'Designers'},
{"id":22,"title":'Accounts'},
]
}]);
Run Code Online (Sandbox Code Playgroud)
然后在HTML文件中,我使用ng-options动态创建选择框,并使用ng-repeat创建这些类别的列表.这一切都很好,但现在我希望能够过滤
<div ng-app="app">
<div ng-controller="Main">
<select name="show-filter" ng-model="catFilter" ng-options="category.title for category in ourTeamCategories">
<option value="{{category.id}}"></option>
</select>
<li ng-repeat="cat in ourTeamCategories">
<h3>{{cat.title}}</h3>
<!-- for testing -->
<b>input: {{catFilter.id}}</b> - - ID: {{cat.id}}
</li>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我以为我可以通过以下方式运行过滤器,但是我收到了一个错误.谁能告诉我我做错了什么?
<li ng-repeat="cat in ourTeamCategories | filter {cat.id:catFilter.value}">
Run Code Online (Sandbox Code Playgroud)
我在这里创建了一个plunker:http://plnkr.co/edit/YwHknAm3X2NUdxDeUjS8?p = preview
我正在尝试传递theOptions数组中的一些值,并将它们放入一个名为$ theDefaults的新数组中.
$theOptions = array(
'item1' => array('title'=>'Title 1','attribute'=>'Attribute 1','thing'=>'Thing 1'),
'item2' => array('title'=>'Title 2','attribute'=>'Attribute 2','thing'=>'Thing 2'),
'item3' => array('title'=>'Title 3','attribute'=>'Attribute 3','thing'=>'Thing 3')
);
Run Code Online (Sandbox Code Playgroud)
所以,$ theDefaults数组应如下所示:
$theDefaults = array(
'Title 1' => 'Attribute 1',
'Title 2' => 'Attribute 2',
'Title 3' => 'Attribute 3'
);
Run Code Online (Sandbox Code Playgroud)
但是,我无法弄清楚如何做到这一点.试过这个,但显然不太合适.
Run Code Online (Sandbox Code Playgroud)$theDefaults = array(); foreach($theOptions as $k=>$v) { array_push($theDefaults, $v['title'], $v['attribute']); }
但是当我跑这个......
foreach($theDefaults as $k=>$v) {
echo $k .' :'.$v;
}
Run Code Online (Sandbox Code Playgroud)
它返回这个.0:标题11:属性12:标题23:属性24:标题35:属性3
看起来太近了,但为什么数组中的数字?