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 つの現在の目標と、新しい目標を追加するオプションが表示されます。しかし、どういうわけか、新しい目標を追加するオプションを表示するだけなので、Chrome (27) では同じ jsp がうまく機能しません。

開発者ツールで HTML を調べると、Chrome によって ng-repeat がコメントアウトされていることがわかりますが、なぜそうなるのでしょうか??

私はコメントアウトされた 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 クリック イベントを処理しないためです (クロムの選択オプション要素のクリック イベント)。そのため、HTML で ng-repeat についてコメントし、ゴール オブジェクトを繰り返し処理しようとしたが、オブジェクトが存在しなかったと述べました。

于 2013-05-22T16:10:33.407 に答える