【发布时间】:2014-03-08 06:28:59
【问题描述】:
在收到 AngularJS 提交的查询后,我试图显示一些重复的对象。 当我只看到以下页面而没有任何提交查询时,ng-repeat 将呈现一个 ng-repeat 的 div 部分而没有结果(因此为空)。为什么会发生这种情况,如何禁用显示空结果渲染?
- html
代码
<form ng-submit="doSearch()" ng-keyup="doSearch()" name="myForm">
<input type="text" placeholder="<%= t('.placeholder') %>" ng-model="query" required>
<input type="submit" class='button postfix' value="<%= t('.register') %>" ng-disabled="myForm.$invalid">
</form>
<div ng-repeat="result in results">
<div class="row">
<div>
<p ng-bind-html="result.contentSnippet"></p>
</div>
<div>
<a href="/#" target="_blank">link</a>
</div>
</div>
</div>
- 控制器
代码
google.load "feeds", "1"
kindlers = angular.module("kindlers", [ "ngSanitize" ])
findFeeds = ($scope)->
google.feeds.findFeeds $scope.query, (result) ->
console.log $scope.query
if $scope.query == "undefined" || result.error
$scope.results = undefined
else
$scope.results = result.entries
$scope.$apply()
@mainCtrl = ($scope, $http) ->
console.log($scope.results)
$scope.doSearch = ->
google.setOnLoadCallback findFeeds($scope)
- JavaScript(从上面的 CoffeeScript 转换而来)
代码如下。控制台.log($scope.results);显示“未定义”。
(function() {
var findFeeds, kindlers;
google.load("feeds", "1");
kindlers = angular.module("kindlers", ["ngSanitize"]);
findFeeds = function($scope) {
return google.feeds.findFeeds($scope.query, function(result) {
console.log($scope.query);
if ($scope.query === "undefined" || result.error) {
$scope.results = void 0;
} else {
$scope.results = result.entries;
}
return $scope.$apply();
});
};
this.mainCtrl = function($scope, $http) {
console.log($scope.results);
return $scope.doSearch = function() {
return google.setOnLoadCallback(findFeeds($scope));
};
};
}).call(this);
【问题讨论】:
-
你能显示你的控制器代码吗?
-
@Oledje,上面是控制器的代码。
-
您不应该将 $results 对象设置为 undefined。将其初始化为空数组,当没有结果时,将其设置回空数组... $scope.results = [];
标签: javascript angularjs coffeescript