0

我在jsp中有这段代码(缩小了一点):

<div class="popup default" ng-app="interview" ng-init="employeeId = '${employee.id}'; findTimelineEntries(); getAddInterviewRights(); getEditInterviewRights();" ng-controller="TimelineCtrl">
  <div class="box-wrapper edit" ng-show="hasAddInterviewRights">
    <div class="box">
      <div class="pointer"></div>
      <div class="box-content">
        <div class="icon close" ></div>
        <div class="form-item">
        <!-- cut -->
        </div>
      </div>

      <div class="form" id="convo">
        <div class="form-item">
          <!-- cut -->
        </div>
        <div class="form-break"></div>
        <div class="form-item">
          <div class="label">
            <div class="fi-content">
              Currently open goals
            </div>
          </div>
          <div class="value">
            <div class="editable" ng-repeat="goal in interviewForm.goals" ng-click="openEditable($event.target)">
              <div class="icon edit"></div>
              <div class="icon close" ng-click="closeEditable($event.target)"></div>
                {{goal.shortDescription}}
              <div class="ed-content">
              <div class="form-item">
                <div class="label">
                <div class="fi-content">
                  Deadline
                </div>
              </div>
              <div class="value">
                <input type="text" ng-model="goal.dueDate" ui-date="dateOptions" size="15" />
              </div>
            </div>
            <div class="form-item">
              <div class="label">
                <div class="fi-content">
                  Status
                </div>
              </div>
            <div class="value select">
              <select ng-model="goal.status" ng-options="code as description for (code, description) in goalStatusses"></select>
            </div>
          </div>
          <div class="form-item">
            <div class="label">
              <div class="fi-content">
                Comment
              </div>
            </div>
            <div class="value">
              <div class="fi-content">
                <table class="plain">
                  <tr ng-repeat="progress in goal.progresses">
                    <td>{{progress.progressDate | date: 'dd-MM-yyyy'}}</td>
                    <td>{{progress.progressReport}}</td>
                  </tr>
                </table>
              </div>
            </div>
          </div>
        </div>
      </div>
      <div class="editable">
        <div class="icon add"></div>
          <div class="icon close" ng-click="closeEditable($event.target)"></div>
          Add a new goal

它在 Firefox (20.0.1) 中也能正常工作:它显示了 2 个当前目标和添加新目标的选项。但不知何故,相同的 jsp 在 Chrome (27) 中并不能很好地工作,因为它只是显示了添加新目标的选项

使用开发人员工具查看 HTML 时,我看到 ng-repeat 已被 Chrome 注释掉,但它为什么会这样做呢?

我在 ng-repeat 上搜索了被注释掉,但答案是使用 ng-repeat 的 div 不在带有 ng-controller 的 div 内,但我的代码肯定不是这种情况

从开发人员工具中获取的 HTML:

<div class="value">
  <!-- ngRepeat: goal in interviewForm.goals -->
  <div class="editable">
    <div class=icon add"></div>
    <div class=icon close" ng-click="closeEditable($event.target)" style="dispay:none;"></div>
      Add new goal

我检查了其他浏览器,它在 Safari (5.1) 中也不起作用,在 IE8 中也不起作用,尽管一位同事说它在他的 IE9 中起作用

4

1 回答 1

1

好吧,我终于发现出了什么问题,实际上是

    $('.select .option').click(function() {
    var choice = $(this).text();
        etc.

必须改成

$(".select #itemAddSelector").change(function(){
    var selectedOption = $(this).children(":selected");
    var choice = $(selectedOption).text();
        etc.

由于从未在 Chrome 中调用从控制器检索目标的函数,因为 Chrome 不处理选项上的 jQuery click 事件(chrome 中选择选项元素上的 Click 事件)。所以它只是在 HTML 中评论 ng-repeat 说它试图迭代目标对象,但没有对象存在...... pfff,我一直在寻找错误的方向太久了。

于 2013-05-22T16:10:33.407 回答