javascript - ng-repeat 拒绝执行

标签 javascript angularjs angularjs-directive

我的 Javascript(Angular 自定义指令)如下:

var addedSubject = function($rootScope){
   return{
      restrict:'E',
      templateUrl:'/static/html/marks_app/directives/added_subject_item.html',
      replace:true,
      scope:{
      },
      controller:["$scope", function($scope){
          $scope.mySubjects = $rootScope.allSubjects;
      console.log($scope.mySubjects);
  }]
  };
 };
 marksApp.directive('addedSubjectDirective', ["$rootScope",addedSubject]);

我的HTML如下:

 <div class="modal-body">
                <div class="form_body sub_results">
                    <div id="search_module_head" class="form_panels">
                        <div id="search_univ" >
                            <select id="form_sub_sel" autofocus form="form_sub_eval">
                                <option disabled selected>Select University</option>
                                <option value="ufs">University of the Free State</option>
                            </select>
                        </div>
                        <div id="search_code" class="form_panels">
                            <input type"text" id="search_code_input" ng-model="subFilter" placeholder="Enter Subject Code"></input>
                        </div>
                    </div>
                    <div class="search_results">
                        <div class="search_results_head">
                            <p>Search Results</p>
                        </div>
                        <div id="search_results_content">
                            <ul>
                              <search-result-list-item
                                ng-repeat="varsitySub in allUnivSubjects | searchFor:subFilter"
                                varsity-subject="varsitySub">
                              </search-result-list-item>
                            </ul>
                        </div>
                    </div>
                </div>
                <div id="added_sub_list">
                    <div class="added_sub_list_head">
                      <p>
                        Added Subjects
                      </p>
                    </div>
                    <div class="added_sub_list_body">
                      <ul>
                          <added-subject-directive ng-repeat="addedSub in mySubjects">
                          </added-subject-directive>
                     </ul>
                  </div>
             </div>
 </div>

问题是,当我在 HTML 上使用 ng-repeat 运行指令(added-subject-directive)代码时,代码拒绝工作。它没有在屏幕上显示任何内容,也没有记录我尝试从指令的 Javascript 记录的任何内容。但是,当我删除 ng-repeat 时,代码将按预期执行(尽管由于缺少 ng-repeat,但没有 ALL 所需的输出)。我已经拔掉了所有的头发,所以有人可以帮助我尝试理解在这种情况下我可能做错了什么吗?

最佳答案

一些事情。 ngRepeat 是一个终端指令。对于终端指令,当前优先级将是最后一组将执行的指令(当前优先级的任何指令仍将执行,因为相同优先级的执行顺序未定义)。请注意,指令模板中使用的表达式和其他指令也将从执行中排除。

ngRepeat 的优先级也为 1000。当在单个 DOM 元素上定义多个指令时,有时需要指定指令的应用顺序。优先级用于在调用编译函数之前对指令进行排序。优先级定义为一个数字。首先编译具有较高数字优先级的指令。预链接函数也按优先顺序运行,但后链接函数按相反顺序运行。具有相同优先级的指令的顺序是未定义。默认优先级为0

为您的指令添加更高的优先级,以确保它首先运行。

var addedSubject = function($rootScope){
   return{
      restrict:'E',
      templateUrl:'/static/html/marks_app/directives/added_subject_item.html',
      replace:true,
      priority: 1001, // added higher priority than ngRepeat
      scope:{
      },
      controller:["$scope", function($scope){
          $scope.mySubjects = $rootScope.allSubjects;
      console.log($scope.mySubjects);
  }]
  };
 };
 marksApp.directive('addedSubjectDirective', ["$rootScope",addedSubject]);

关于javascript - ng-repeat 拒绝执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41384301/

相关文章:

javascript - 通过 Knockout 组合文本和 html

javascript - 无法从 AngularJS 数据中进行 NG-Repeat 数组(英雄联盟)

javascript - 为什么过滤器在 Angular 输入字段中不起作用?

javascript - 如何防止 iframe 在注入(inject) DOM 时加载?

javascript - Mysqli 在 jquery 中返回逗号分隔值不查看该值?

javascript - joomla + jquery + 原型(prototype)。无法让 noConflict 正常工作。

javascript - 通过 http 的 JSON 响应在 Angular 中不起作用

javascript - Angular ng-repeat 变化值

angularjs - 在 AngularJS 指令 Controller 中使用 CoffeeScript 的类

javascript - AngularJS 指令 - 将属性值链接到范围属性