每當我得到搜索結果時,我都會嘗試呈現指令。algoliaSearch我的計劃是最初保留一個范圍變數false,每當我回傳搜索結果時,我將其更改為true. 然后在我看來,我嘗試根據變數的值來呈現指令。
.directive('searchResults', function () {
return {
restrict: 'E',
templateUrl: 'app/search/directives/templates/searchResults.template.html',
controller: ['$scope', 'AlgoliaSearchService', function ($scope, AlgoliaSearchService) {
$scope.hits = [];
$scope.nbHits = null;
$scope.algoliaSearch = false;
AlgoliaSearchService.on('result', results => {
$scope.algoliaSearch = true;
$scope.hits = results.hits;
$scope.nbHits = results.nbHits;
console.log($scope.algoliaSearch)
});
}]
};
})
在我看來,當我得到搜索結果時,我想呈現指令
<search-results ng-if="algoliaSearch"></search-results>
但這似乎不起作用。它不會在搜索時呈現任何內容,甚至console.log($scope.algoliaSearch)不會在控制臺上列印任何內容。但是,如果我使用喜歡
<search-results></search-results>
或者
<search-results ng-if="true"></search-results>
然后它渲染和console.log作業,但這不是我想要的方式。
我的問題是為什么它不根據我的范圍變數有條件地呈現指令。一旦我得到搜索結果,我想讓它有條件地呈現。
任何幫助深表感謝。
uj5u.com熱心網友回復:
您的指令 html<search-results ng-if="algoliaSearch"></search-results>未顯示,因為algoliaSearch它甚至在呈現和執行指令代碼之前就在 $scope 中查找變數。不僅該變數不在 $scope 中,而且在 ng-if 為真之前它也不可用。
要解決此問題,您最好的選擇是將您的 ng-if 更改為 $scope 中的內容,或者更好的是,只需使用該<search-results></search-results>指令,并讓 html in...searchResults.template.html包含布爾開關,例如
<div class='search-results' ng-if='algoliaSearch'>
<div ng-repeat='....'>
<!-- etc -->
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/420637.html
標籤:
