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) がなくなったようです。
うまくいけば、些細なことが欠けています。