JSON 填充的表单元素不使用 angularJs 过滤器进行过滤
JSON populated form elements not filtering using angularJs filter
select元素确实由http请求填充,但select元素中的选项不会随着ng-model的更改而更新。 我是 angularJs 的新手,所以我假设这是一个简单的修复。我尝试了许多变化,但没有积极的结果。
<script>
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope, $http) {
$http.get('http://graph.facebook.com/platform')
.success(function(data) {
})
});
</script>
<body ng-controller="MainCtrl">
Search:
<input type="search" ng-model="searchText" />
<select>
<option ng-repeat="item in data | filter: searchText">{{item}}</option>
</select>
<br>
<pre>{{ data | json}}</pre>
</body>
http://plnkr.co/edit/C39yVDsG3OcfvwjVSxP9?p=preview
TarranJones,这个Plunker应该把事情弄清楚了。如果不查看您的数据,很难给您 100% 明确的答案。你应该能够从这里弄清楚。
http://plnkr.co/edit/UYm0SwtU6ePZkZLx2w2U?p=preview
为了在评论中回答您的问题,我将替换:
app.controller('MainCtrl', function($scope) {
$scope.colors = [
{name:'black', shade:'dark'},
{name:'white', shade:'light'},
{name:'red', shade:'dark'},
{name:'blue', shade:'dark'},
{name:'yellow', shade:'light'}
];
});
跟:
app.controller('MainCtrl', function($scope, $http) {
$http.get('http://www.foo.com')
.success(function(data) {
$scope.colors = data;
})
.error(function() {
console.log('My name is Error, now eat it!);
});
});
确保注入$http。
在这里,http://plnkr.co/edit/UYm0SwtU6ePZkZLx2w2U?p=preview
更新:
Tarran还遇到了从API过滤单个返回的JSON对象的问题。角度过滤器只能接受数组,因此不接受对象。为了让 Tarran 过滤对象,他必须首先遍历对象并将对象属性存储到数组中。然后将数组返回到$scope后,您可以过滤结果。下面提供了 plunker 和代码: http://plnkr.co/edit/9M3zZFN5jyV8w7fg7EE3?p=preview
控制器:
$http.get('http://graph.facebook.com/4') .success(function(data) {
//CREATE AN EMPTY ARRAY
result = [];
//ITERATES THROUGH THE OBJECT SAVING THE OBJECTS PROPERTIES TO ARRAY
for (var i in data) {
if (data.hasOwnProperty(i)) {
//PUSHES THE PROPERTIES ONTO THE ARRAY
result.push(data[i]);
}
}
//SETS THE NEW DATASET TO THE ARRAY AND RETURNS TO $SCOPE
$scope.dataset = result;
});
.HTML:
{{dataset}}
<BR>
<BR>Search:
<input type="search" ng-model="searchText" />
<BR>
<BR>
<select>
<option ng-repeat="data in dataset | filter: searchText">{{data}}</option>
</select>
尝试先将数据初始化为对象。
$scope.data = {}
或在 HTML 中:
<div ng-controller="FetchCtrl" data-ng-init="data={}; fetch()">
相关文章:
- Angularjs-utils高亮过滤器在搜索时破坏应用程序
- Angularjs通过过滤器获取indexOf
- 使用javascript或angularjs特定过滤器搜索字符串中第一个img标记的json值
- angularjs ng基于点击时的数组值重复过滤器
- 使用angularjs内置过滤器过滤代码中的特定属性
- AngularJS Linky过滤器停止传播
- 自定义angularjs过滤器日期时间格式额外字符
- AngularJS自定义过滤器未触发点击事件
- AngularJS中货币过滤器的Javascript代码无法使用自定义符号
- 如何在 AngularJS 中的过滤器中使用参数
- 简单顺序通过过滤器在 AngularJs 中不起作用
- AngularJS中的严格模式过滤器
- 用于分页的 AngularJS 自定义过滤器
- 无法获取过滤器以在 AngularJS 中执行
- 两个日期之间的自定义过滤器 AngularJS
- 过滤器 AngularJS REST JSON 数据:错误:badcfg 响应与配置的参数不匹配
- 在选择框中选择一个具有过滤器Angularjs的选项
- 过滤器angularjs不'对我来说不起作用
- 按数字范围过滤,自定义过滤器 - AngularJS
- 注入HTML过滤器- angularJS