0

Ember: v1.0.0-rc.3-112-g3ec3711
EmberData: 最後のコミット: f8cb714 (2013-04-28 07:24:47 -0700)

クロスコントローラー通信用の「ニーズ」APIに苦労しています。

Application.Route で最上位のコントローラーを次のように定義します

this.controllerFor('header').set('model', Nucleus.User.find(1));

そのため、特定の URL に属さず、常に存在する必要があるヘッダーがあります。

そして、いくつかのメソッドを持つ関連する HeaderController があります。

  userName: function () {
    return this.get('firstName') + " " + this.get('lastName');
  }.property('firstName', 'lastName'),

  clientLogo: function () {
    return Nucleus.localDomain + 'Content/images/logos/logo_' + this.get('currentClient') + '.png';
  }.property('currentClient'),

  clientClaimBillText: function () {
    if (this.get('clientType') === "PropertyAndCasualty") {
      return "Bill";
    }
    return "Claim";
  }.property('clientType')

ネストされたルート /clients/someClient/claims/1/1 を移動するときの URL で、

私がClaimControllerに着いたとき。ヘッダー コントローラーの "clientClaimBillText" メソッドにアクセスする必要があるクレーム テンプレートにパーシャルがあります。

私の ClaimController では、「ニーズ」API を指定します。

Nucleus.ClaimController = Ember.ObjectController.extend({
  needs: ['header']

});

私のクレームテンプレートでは、これをパーシャルと呼んでいます。HeaderController プロパティへのアクセスが必要な場所。

<script type="text/x-handlebars" data-template-name="_claim_header">
  <div id="page_header" class="silver_gradient">
        <div class="sub_nav_content">
            <div class="sub_nav_left">
                <label class="page_title">{{controllers.header.clientClaimBillText}} Action</label>
            </div>
            <div class="sub_nav_right">

            </div>
        </div>
    </div>
</script>

パーシャルは適切にレンダリングされます。私が抱えている問題は、ヘッダーのテンプレートがその状態を失っているように見えることです。UserObject を吹き飛ばすように。バインドされたすべてのプロパティが再レンダリングされますが、設定されたユーザー オブジェクトはありません。元の Nucleus.User.find(1) がなくなったようです。

うまくいけば、些細なことが欠けています。

4

1 に答える 1

0

明らかなものは何も見えません。「ヘッダー」コントローラーのインスタンスが 2 つあるようです。それらは同じオブジェクト ID ですか?

// in Application.Route
controller = this.controllerFor('header');
controller.set('model', Nucleus.User.find(1));
console.log ('from app route header controller is: ', controller.toString());

// in your template
<pre>Header controller is; {{controllers.header}}</pre>
于 2013-04-30T20:21:02.420 に答える