我在这里遇到了一个相对奇怪的错误。
在我的控制器中,我定义了一个数组。
$scope.results = [];
在ng-keyUp事件中,我触发了这个方法:
$scope.search = function() {
MyService.findStuff($scope.myModel.searchTerms).success(function(response) {
$scope.results = response;
});
在第一个keyup上,搜索触发,返回我的结果,并使用结果更新DOM:
<div ng-repeat="thing in results">{{ thing.name }}</div>
一切都很完美,但仅限于第一个按键。
之后,我收到了这个错误:
TypeError: Cannot read property '0' of null
这显然会使Angular应用程序崩溃,而且我要去吃午餐。
编辑:我应该澄清,在$scope.search
执行任何代码之前抛出该错误。不会触发对服务器的查询,也不会执行任何控制台日志记录。
我已将其追踪到$scope.results = response;
。删除此行后,查询会反复触发,没有任何问题。我注意到,如果我尝试手动更改结果(例如,在按键上我只是执行类似$scope.results = [{ name: "Spaz" }]
的操作,则它适用于初始触发但不适用于后续触发。
我疯了!什么了?!