6

同じ controllerの異なるインスタンスによって制御されるページに 2 つの要素を表示したいのですが一意の外部情報を登録する必要があります (一方の「ジョイスティック」は「player = one」などの識別プロパティ セットを取得し、もう一方は「player = one」など)。 「プレーヤー=2」を取得します。これを正確に実行する最良の方法はわかりません

私が達成しようとしていることの一般的な例を次に示します。

<!-- These need to have different configurations -->
<div ng-include src="'joystick/joy.tpl.html'" 
     ng-controller="JoystickCtrl">...</div>

<div ng-include src="'joystick/joy.tpl.html'" 
     ng-controller="JoystickCtrl">...</div>

するべきか:

ディレクティブを使用しますか?

<div ng-include src="'joystick/joy.tpl.html'" 
     ng-controller="JoystickCtrl" player="one">...</div>
<div ng-include src="'joystick/joy.tpl.html'" 
     ng-controller="JoystickCtrl" player="two">...</div>

$injector を使用しますか? (fyi - これは間違った実装かもしれません)

<div ng-controller="DualJoyCtrl">
    <div ng-include src="'joystick/joy.tpl.html'" 
         ng-controller="joyOne" player="one">...</div>
    <div ng-include src="'joystick/joy.tpl.html'" 
         ng-controller="joyTwo" player="two">...</div>
</div>

-----

.controller('DualJoyCtrl', function ($injector, JoystickCtrl, $scope, $rootScope) {
   $scope.joyOne = $injector.instantiate(JoystickCtrl, {$scope: $rootScope.$new(), player:"one"});
   $scope.joyTwo = $injector.instantiate(JoystickCtrl, {$scope: $rootScope.$new(), player:"two"});
});

それとも…やらない?

これは、一見決定的ではないように見える別のスタック投稿に似ていることに気付きました。

4

2 に答える 2

7

編集

ngController は ngInit の前に初期化されるため、コントローラーですぐにデータを使用できるようにするには、ngInit を使用して親要素で ngController をラップする必要があります。

<div ng-init="player = 'one'">
   <div ng-controller="JoystickCtrl">
     ...
   </div>
</div>

元の答え

シンプルな ng-init で十分だと思います:

<div ng-controller="JoystickCtrl" ng-init="player='one'">...</div>
<div ng-controller="JoystickCtrl" ng-init="player='two'">...</div>
于 2013-06-04T20:57:27.153 に答える