2

私はかなり奇妙な問題を抱えた Ember.js アプリを持っています。

Ember のルーター経由でページに移動すると壊れるページがありますが、直接読み込まれた場合は壊れません。この場合、buy/credit_card/index

http://localdev/#/buy/credit_cardブラウザに直接ロードすると、ページは正常に機能します。

ブラウザーに読み込みhttp://localdev/、すぐに移動できるリンクをいくつかクリックすると、#/buy/credit_card次のエラー メッセージが表示されます。

アサーションに失敗しました: パス 'App.OrderCalculatorView' でビューが見つかりません アサーションに失敗しました:
App.OrderCalculatorView () ではなく #view ヘルパーにビューを渡す必要があり
ます

問題のビューのテンプレート (の関連部分) は次のようになります。

<h3>Pay order with credit card</h3>

<p>Description here</p>

<form>
  {{log App.OrderCalculatorView}}
  {{view App.OrderCalculatorView}}

  <label>

これが失敗するたびに、{{log App.OrderCalculatorView}}は undefined を返します。

の定義はApp.OrderCalculatorView、アプリの残りの部分と同じファイルにあり、ルーターの前に配置されます。次のようになります。

App.OrderCalculatorView = Ember.View.create({
  templateName: 'order/calculator',
});

アプリのすべての JavaScript コードは同じapp.jsファイルにあり、すべてのテンプレートはそのindex.htmlファイルにあり、それらは静的ファイルとして提供されます (この場合は nginx によって)。他のケースではありません。Ember.View.create()戻ってくる場合はありundefinedますか?または、この動作の説明として他に何が考えられますか?

4

1 に答える 1

4

ビューではextendなくcreate、ember はレンダリング時にインスタンスを作成し、DOM から削除すると同じインスタンスを破棄する必要があります。つまり、ember がビューのライフサイクルを担当します。

だからこれを試してください:

App.OrderCalculatorView = Ember.View.extend({
  templateName: 'order/calculator',
});

それが役に立てば幸い。

于 2013-08-11T10:19:24.110 に答える