1

私は Ember アプリ (RC1 を使用) に取り組んでおり、IE に問題があります (驚き)。旅行の概要、詳細、または編集のいずれかを表示できる一連のネストされたビューがあります。トリップビューは(おおよそ)次のようになります。

{{#if tripController.showSummary}}
    {{template "view/TripSummaryView"}}
{{/if}}

{{#if tripController.showDetails}}
    {{template "view/TripDetailView"}}
{{/if}}

{{#if tripController.showEdit}}
    {{template "view/TripEditView"}}
{{/if}}

旅行の概要ビューを囲む div には、次のアクションがあります。

<div {{bindAttr id="tripController.tripId"}} 
     class="card single-line" 
     {{action "toggleDetails" tripController on="click"}} 
     style="cursor:pointer">

そしてコントローラーはアクションを処理します:

toggleDetails: function(tripController) {
    if (this.get('showDetails')) {
        this.set('showDetails', false);
        this.set('showSummary', true);
    } else {
        this.set('showDetails', true);
        this.set('showSummary', false);
    }
},

すべてがかなりバニラで、Chrome、FF、および Safari で完全に動作します。しかし、IE で実行すると、メタモーフの realNode() 関数 (ember.js の 17264 行目) で爆発します。

var realNode = function(start) {
    while (start.parentNode.tagName === "") {
      start = start.parentNode;
    }

    return start;
  };

このエラーで:

SCRIPT5007: Unable to get value of the property 'parentNode': object is null or undefined 

コードにブレークポイントを配置すると、Ember が 2 つのメタモルフを削除しようとしているように見えますが、2 番目は最初のメタモルフの内側にあるためstart、2 回目は null になります。Chrome でその関数にブレークポイントを設定しましたが、呼び出されたようには見えません。

これを JSFiddle に縮小しようとしましたが、それを壊すことはできないようです。つまり、ビューをセットアップする方法に問題が発生しているに違いありません。これをデバッグする方法についての提案は大歓迎です!

ありがとう、スコット

4

1 に答える 1

0

ContainerView を使用して同じことを達成できますが、子ビューがモデル/コントローラーを受信しないという同様の問題にも直面しています。ここに[同様の投稿]があります(childViewsがそれぞれのコントローラーにバインドされている場合に必要なContainerViewの例「containerviewのchildviewsコントローラーバインディング」)

于 2013-02-26T21:38:30.640 に答える