【发布时间】:2015-10-26 22:38:36
【问题描述】:
我在使用选择选项元素按定义的类别过滤 JSON 条目时遇到问题。非常感谢任何帮助。
我的应用应该做什么:
- 通过 http.get(工作)从文件中加载 JSON 数据
- JSON 数据包含每个条目的职位名称和职位类别(以及其他数据)
- 将这些条目中的每一个从 JSON 读取到 html 上的列表标记中(工作)
- 通过选择选项元素按工作类别过滤此列表(无效)
我猜问题出在我的控制器功能的某个地方。但我对 angularjs 很陌生,所以我无法找出问题所在......非常感谢任何帮助。
我的 JSON 文件的前两个条目带有“类别”标签:
[{
"jobtitle":"Multimedia Producer",
"name":"A. Text",
"shortname":"atext",
"shortdescription":"Werbeagentur",
"team":"XXX",
"lookingfor":"XXX",
"jobdescription":"XXX",
"portfolio":"XXX",
"contact":"XXX" ,
"categories":"none"
},
{
"jobtitle":"Kameraassistent",
"name":"Movie & Art",
"shortname":"movie_art",
"shortdescription":"Corporate Movies and more...",
"team":"XXX",
"lookingfor":"XXX",
"jobdescription":"XXX",
"portfolio":"XXX",
"contact":"XXX",
"categories":"photography"
}]
controller.js:
var myApp = angular.module('myApp', []);
myApp.controller('MyController', ['$scope', '$http', function ($scope, $http){
$http.get('js/data.json').success(function(data){
$scope.jobs = data;
$scope.catchange = 'categories'
});
}]);
带有选择选项元素的 HTML 页面设置的一部分:
<div ng-controller="MyController">
<span class="input">
<select ng-model="catchange" class="cs-select cs-skin-underline">
<option value="none">Suche nach Kategorien</option>
<option value="photography">Fotografie</option>
<option value="text">Text</option>
<option value="digital">Digital</option>
<option value="print">Print</option>
<option value="consulting">Beratung</option>
<option value="advertising">Werbung</option>
<option value="socialmedia">Social Media</option>
<option value="strategy">Strategie</option>
<option value="conception">Konzeption</option>
<option value="film">Film</option>
<option value="tv">TV</option>
</select>
</span>
</div>
<div class="searchlisting" ng-controller="MyController">
<ul class="portfolio-grid">
<li class="grid-item" ng-repeat="item in jobs | filter: catchange" data-jkit="[show:delay=300;speed=500;animation=fade]">
<img ng-src="img/searchlist/{{item.shortname}}_tn.jpg" alt="Photo of {{item.name}}">
<a class="ajax-link" href="single.html">
<div class="grid-hover">
<h1>{{item.jobtitle}}</h1>
<p>{{item.name}}</p>
</div>
</a>
</li>
</ul>
</div>
非常感谢您的帮助。
干杯
【问题讨论】:
-
我不明白这条线应该代表什么?
$scope.catchange = 'categories'。您实际上是将过滤器设置为字符串'categories',这甚至不是选择列表中的有效选项。 -
是的,我认为这就是问题所在。谢谢克莱斯。我该如何解决这个问题,它需要相应的条目?抱歉 - 我是 Angular 新手...
-
它应该做什么:用户在选择列表中选择一个条目(类别),然后角度将只显示 JSON 文件中的相应条目(=类别标签)。 guidokoch.ch/jobplattform/jobsuche.html
-
好的,让我们分解一下您在这里尝试做的事情。您的服务正在获取作业列表,并且您希望根据下拉列表过滤它们。为什么您甚至需要在收到数据时将下拉列表的值设置为任何值?
-
好的,重新加载浏览器后,我可以使用下拉菜单了;但是检查控制台,您的服务似乎正在抛出 404 来获取您的数据,并且没有任何要过滤的内容。
标签: javascript json angularjs html-select