我有一個指令,它可以正常作業,當我輸入某些內容時,search()指令中的作用域函式會觸發并$scope.query使用輸入文本進行設定。
這是指令模板
<div class="container">
<div class="system-filter-header">
<div class="no-gutter">
<div class="system-search-wrapper search-wrapper-width">
<i ng-click="search($evt)" class="fa fa-search"></i>
<input type="text" ng-keyup=search($evt) class="search pull-left suggesstions-styles"
ng-model="query" ng-attr-placeholder="Search...">
</div>
</div>
</div>
</div>
這是觸發的范圍函式
$scope.search = function() {
console.log($scope.query.length)
}
但是當我使用ng-if="true"模板的第一行(true僅用于泛化,我想在內部進行不同的條件檢查ng-if)時,
<div class="container" ng-if="true">
仍然search會被觸發,但console.log總是給出 0 并且它似乎沒有更新$scope.query值,因為它在$scope.query = ''
整個輸入程序中都保持不變。
編輯
這是一個具有幾乎相似行為的示例代碼筆。問題出在searchBox指令上,我已添加ng-if=true到模板中,但搜索不起作用。當我洗掉ng-if搜索作業正常。
這有什么原因嗎?
uj5u.com熱心網友回復:
AngularJS 的經驗法則:你ng-model應該總是包含一個點。否則,創建子作用域(如ng-ifor ng-repeat)的 AngularJS 指令將在該子作用域而不是父作用域上創建重復屬性。遵循controllerAs 約定可以完全緩解這種行為。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/428399.html
標籤:angularjs angularjs 指令 angularjs-范围 angularjs-ng-if
上一篇:如何防止頁腳與div重疊?
