【发布时间】:2014-04-15 06:47:31
【问题描述】:
在完成了一些关于AngularJS 的教程之后,我现在正在自己编写我的第一个示例应用程序。我从显示一个非常简单的员工列表开始,效果很好。现在我想添加一个简单的文本过滤器,就像我在教程中学到的那样。
我在我的 html 列表中添加了一个带有 ng-model="filterText" 和 | filter: filterText 的输入,并在我的 angularJS 控制器中添加了 $scope.filterText = null;。
当我现在在输入中输入任何内容时,什么都没有发生。当我将filterText 值直接设置到我的AngularJS 控制器时,过滤器正在工作,因此更新textFilter 的值肯定有问题。
我该怎么做才能让它工作?我已经在寻找解决方案,但没有任何帮助。
我的html:
<div class="container main-frame" ng-app="Employees" ng-controller="mainController" ng-init="init()">
<div id="searchbox">
<label>Filter: </label>
<input type="text" ng-model="filterText" />
</div>
<div id="emplist">
<h2>Employees</h2>
<p>
<ul id="emps">
<li ng-repeat="mitarbeiter in results | filter: filterText">
# {{mitarbeiter.id}} - <strong>{{mitarbeiter.name}}</strong>
</li>
</ul>
</p>
</div>
我的 angularJS:
var app = angular.module('Employees', []);
app.controller("mainController", function ($scope) {
$scope.results = [];
$scope.filterText = null;
$scope.init = function(){
jsonObject = eval(jsonfunction("parameters"));
angular.forEach(jsonObject, function (mitarbeiter, key) {
$scope.results.push(mitarbeiter);
});
}
})
编辑:
根据NidhishKrishnan的回答:
在 firebug 中,我的 jsonObject 如下所示:
[{"id":1,"name":"John"},{"id":2,"name":"Jane"},{"id":3,"name":"Peter"}]
我用这个 jsonObject 更改了工作解决方案,它仍然工作正常,所以这应该不是问题......
更多信息:我正在使用 Web api 2 控制器在 VS 2013 调试模式下工作,该控制器获取 sql 数据库的数据。我的 jsonfunction 只不过是对控制器的 ajax 请求。
EDIT2:
当我不使用eval() 时,没有任何变化。我成功获取了我的列表,但我无法使用过滤器...这是我的 Ajax 请求:
function jsonfunction(par) {
$.ajax({
url: url + par,
async: false,
success: function (data) {
json = data;
},
headers: getSecurityHeaders()
});
return json;
}
答案在我的WebApiConfig.cs 中格式化为 JSON。不可能有任何错误...
【问题讨论】:
-
json函数未定义.....
-
哦... jsonfunction 工作正常。列表正在显示。我只是没有将代码添加到这个问题中。 jsonfunction 给了我一个格式良好的 json 对象。我已经使用这个功能很长时间了,所以应该没有问题。我就是不能使用过滤器。
-
看看我的答案,jsonfunction返回一个json,如图所示,一切正常,甚至过滤一切正常
-
希望你已经理解了......
-
为什么还需要
eval?使用它从来都不是一个好主意。
标签: javascript angularjs ng-repeat angular-ngmodel