Ember0.9.7.1を使用する
アプリが起動して最初の状態に入ると、IE8以下でこのエラーが発生します。私はかなり大きなアプリを持っているので、jsFiddleで再現できるかどうかはわかりませんが、以下に関連するビットを示します。
私はGitHubでこれらの同様の問題を見てきましたが、どちらも私が間違っていることを正確に説明しているとは思いません(それは私である必要があります...そうですか?:))
https://github.com/emberjs/ember.js/issues/752
https://github.com/emberjs/ember.js/issues/447
私のアプリの初期ビューは、次のように状態マネージャーによって作成/ロードされます。
SYOS.stateManager = Em.StateManager.create({
enableLogging: true,
rootElement: #syos-root,
initialState: 'noSectionSelected',
noSectionSelected: Ember.ViewState.create({
view: SYOS.SelectSectionView,
chooseSection: function (manager, context) {
manager.goToState('sectionSelected');
}
}),
<snip>
そのビューは基本的に次のように定義されます。
SYOS.SelectSectionView = Em.View.extend({
templateName: 'selectSectionView',
sectionsBinding: 'SYOS.sectionController.sections'
});
テンプレートの簡略版は次のようになります。
<script type="text/x-handlebars" data-template-name="selectSectionView">
<h2>Some markup</h2>
<table class="select-sect" cellspacing="0">
{{#each sections}}
{{#view SYOS.SelectSectionRowView sectionBinding="this" tagName="tr"}}
<td class="sect">{{section.name}}</td>
{{/view}}
{{/each}}
</table>
</script>
このテンプレートは、それが役立つ場合は、私のhtmlで直接定義されています。
ページをロードすると、コンソールログに次のように表示されます。
ログ:STATEMANAGER:noSectionSelectedと入力します SCRIPT438:オブジェクトはこのプロパティまたはメソッドをサポートしていません ember-0.9.7.1.min.js、10行目文字30680 SCRIPT5022:DOMにないMetamorphで操作を実行できません。 ember-0.9.7.1.min.js、13行目文字29412 SCRIPT5022:例外がスローされ、キャッチされませんでした ember-0.9.7.1.min.js、13行目文字16607
IEのデバッガー(eww)を使用して最初のエラーを中断すると、#eachmetamorphタグでエラーが発生しているように見えることがわかります。それはこの行で壊れます:
g.prototype.checkRemoved=function(){if(this.isRemoved())throw new Error("Cannot perform operations on a Metamorph that is not in the DOM.")}
this.isRemoved()がtrueを返しているためです。デバッガーthis
で調べると、this.start
=="metamorph-6-start"であることがわかります。動作中のブラウザでそのメタモルフタグを検索すると#each
、テンプレートのブロックの開始タグであるように見えます。
sectionBindingは、jQuery .ajax呼び出しから読み込まれる配列であるため、最初は[]になりthis.get('sections').pushObject(section);
、コントローラーでajax呼び出しの結果をループしながらを使用してデータが入力されます。
この状態では、動的ビューの追加や削除は行っていません。ビューをロードし、セクションがajaxサービス呼び出しから戻ってきたときにセクションをバインドする必要があります。
誰かが親切にこれについて正しい方向に私を向けることができますか?ありがとう!
編集:Ember 0.9.8.1に更新され、コンソールでのエラーが1つ少なくなりました。
ログ:STATEMANAGER:noSectionSelectedと入力します SCRIPT5022:DOMにないMetamorphで操作を実行できません。 ember-0.9.8.1.min.js、14行目文字4051 SCRIPT438:オブジェクトはこのプロパティまたはメソッドをサポートしていません ember-0.9.8.1.min.js、10行目文字31677