【发布时间】:2015-06-02 09:48:00
【问题描述】:
Fissio 回答
我正在尝试在 Angular 中创建一个简单的搜索功能。当用户在输入字段中输入内容时,我想搜索我的 JSON 中的所有“标题”,如果一个单词与输入匹配,那么我想带回与匹配相关的所有对象。
工厂
我首先创建了一个工厂来使用 Promise 从 JSON 中检索数据。
.factory('podcastData', function($http) {
var podcastData = {
async: function() {
var promise = $http.get('http://radio-sante-animale.fr/podcast-data.php').then(function(response) {
return response.data.categories;
})
return promise;
}
};
return podcastData;
})
然后在我的控制器中,我尝试在我的控制器中执行搜索程序。 到目前为止,我尝试了一个 for 循环,我得到了数组的长度,然后我得到了数组中的所有“播客”,然后我设法得到了与输入匹配的所有值。
控制器
更新
$scope.findValue = function(enteredValue) {
console.log(enteredValue);
var filtered = [];
podcastData.async().then(function(data) {
for (i = 0; i < data.length; i++) {
angular.forEach(data[i].podcasts, function(podcasts, key) {
var foundPodcasts = _.filter(podcasts, function(podcast) {
return podcasts.title.toLowerCase().indexOf(enteredValue) >= 0
});
if (typeof foundPodcasts !== 'undefined') {
filtered.concat(foundPodcasts);
console.log(foundPodcasts);
};
});
}
});
}
我更新了我的控制器,现在我确实得到了与搜索输入匹配的所有对象,但是当我在 console.log foundPodcasts 时,这是我的回应。这很好!但是,中间有空数组,我无法执行 NG-REPEAT,因为没有可以获取的值。
【问题讨论】:
-
你能告诉我们“数据”的json吗?它包含哪些属性?
标签: javascript json angularjs