我的ng-model是在$ scope绑定的控制器中未更新的值。我可以保证,我的代码中没有语法错误。只有一个控制器与html绑定。 $ watch仅在加载页面时运行一次。 请注意,我的文件中有220个左右的观察者,而控制器文件非常像1500多行代码。为了交叉检查,我还使用不同的控制器绑定一个div,它按预期工作$ watch和$ scope。
我已经验证我的变量在整个项目中没有重复的名称。我认为角度在每页2000观察者之前没有任何性能问题。但事实并非如此。有人可以对这种奇怪的行为有所了解。任何帮助将不胜感激。
注意:我没有在这里发布代码,因为当我最初开始处理控制器并且在单独的原型上工作正常时,代码运行良好。最近,随着越来越多的代码引入了这种行为。
HTML文件:
<div id="studentSearch" class="form-group__text row studentmargin">
<input id="search" type="text" class="studentSearch" tabindex="2"
ng-keyup="$event.which === 13 && !disableSearch ? clickSearchButton(): ''"
placeholder="Search by Name or Email"
ng-model="searchString">
<label for="search">
<button type="button" class="link" tabindex="3"
ng-click="clickSearchButton()" ng-if="!searchResultFlag"
ng-disabled="disableSearch">
<span class="icon-search"></span>
</button>
</label>
<button type="button" class="link" ng-click="clearStudentsSearch()"
ng-if="searchResultFlag" tabindex="4">
<span class="icon-close"></span>
</button>
控制器:
angular.module('app.pages.course.details').controller("CourseDetailController", ['$scope', function($scope){
$scope.disableSearch = true;
$scope.$watch('searchString', function(oldValue, newValue){
if(newValue.length >= 3) {
$scope.disableSearch = false;
}
});
$scope.clickSearchButton = function() { /* Search logic */ }
$scope.clearStudentsSearch = function() {
$scope.searchString = "";
} }]);
所以逻辑是搜索图标只有在searchString大于或等于3个字母时才会启用。在清除搜索按钮时,它将从UI中清除,如果我们打印范围,则它具有该值,因此在按下按钮时,再次搜索工作。
答案 0 :(得分:0)
您可以尝试使用模型ng-model =“parent.name”的父级。