繁体   English   中英

$ scope和$ watch没有更新/工作

[英]$scope and $watch is not updating/working

我的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中清除,如果我们打印范围,则它具有该值,因为按ENTER键,再次搜索工作。

你能尝试使用模型ng-model =“parent.name”的父级。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM