3

コードのどこかで、バグに遭遇しました。ブレークポイントを設定して、何が起こっているかを確認してみました。コンソールでオブジェクト「foo」を調べると、次のようになります。

foo.toString() > "<App.Foo:ember661:174009>" // all good
foo.get('isLoaded') > true 
foo.get('isValid') > true 

まだ:

foo.get('name') > null // Whereas it definitely has a name.

開発者ツールの [ネットワーク] タブを見ると、レコードの読み込みがまだ「終了」中であることがわかります。対応する URL については、「保留中」と表示されます。

このモデルの状態は何ですか? モデルが「完全に」準備ができていることをどのように知ることができますか?

UPDATE : Mike へのコメントによると、registerBoundHelper 関数内でこのレコードを検査していることを追加する必要がありました。したがって、私が見逃しているコンテキストの問題があると思います。それはそう:

... foo template ...
{{ name }} // properly set to a value
{{ my_helper this }}

... helpers ...
Ember.Handlebars.registerBoundHelper('my_helper', function(foo) {
    return foo.get('name'); // name property is null!!
}); 

明らかな何かが欠けているに違いありませんか?

ありがとう、PJ

4

2 に答える 2

1

このモデルの状態は何ですか?

あなたが提供した情報を考えるとわかりませんが、コンソールから調べるには、これを試すことができます:

foo.stateManager.get('currentPath') > should be something like "rootState.loaded.saved"

その状態の詳細については、states.js のソース コードを参照してください。

モデルが「完全に」準備ができていることをどのように知ることができますか?

fullyreadyの意味によって異なります。何が何であるかを確認するのに役立ついくつかのトリック:

モデルの生データを見せて

foo.get('data')
foo.get('data.attributes')

レコードが状態間で遷移したときにコンソール ログ出力を取得する

record.set("stateManager.enableLogging", true)
于 2013-03-28T22:20:31.053 に答える
0

他の人に役立つ場合に備えて、自分の質問に答えます...

この奇妙な動作は、ヘルパーのコンテキストの問題から生じました。それはビューでかなり「深い」ものでした(いくつかのネストされたレベルが下がっ{{partial}}{{render}}います)。何が起こっているのか完全に明確であると言ったら嘘をつきますが、さまざまなコンテキストスイッチを試してみたところ、うまくいきました。

だから私はあなたがそのようなことをした場合、ヘルパーのコンテキストを再確認してください...

于 2013-03-29T20:53:45.777 に答える