voglio visualizzare due elementi di una pagina controllata da diverse istanze dello stesso controller, ma devo registrare alcune informazioni esterne che sarà unica (un "joystick" ottiene un set di proprietà identificative, come "player = one" mentre l'altro ottiene "player = two".) Non sono sicuro del modo migliore per farlo fuori esattamenteAngularJS riutilizzando lo stesso controller su una sola pagina, con diversa configurazione
Ecco un esempio generico di cosa sto cercando di realizzare:
<!-- 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>
Devo:
Utilizzare una direttiva?
<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>
Usa $ iniettore? (FYI - questo potrebbe essere un'implementazione non corretta)
<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"});
});
Oppure ... non fare questo?
Mi rendo conto che è simile ad un altro, apparentemente inconcludente posta stack:
o creare una direttiva – Kosmetika
perfetta, grazie @package – methai
Vorrei aggiungere che $ scope.la proprietà del lettore NON è immediatamente disponibile per il controller, ma è disponibile nel modello. Se si '' '' console.log ($ scope.player) '' 'dal controller si otterrà undefined a meno che non sia circa 50ms o successivo dopo l'inizializzazione del controller. – methai