met*_*hai 6 javascript angularjs angularjs-directive
我想在由同一个控制器的不同实例控制的页面上显示两个元素,但是我需要注册一些独特的外部信息(一个"操纵杆"获得一个识别属性集,如"player = one"而另一个获得"玩家=两个").我不确定最好的方法是将其拉下来
这是我要完成的一个通用示例:
<!-- 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>
Run Code Online (Sandbox Code Playgroud)
我是不是该:
使用指令?
<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>
Run Code Online (Sandbox Code Playgroud)
使用$ 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"});
});
Run Code Online (Sandbox Code Playgroud)
或者......不这样做?
我意识到这与另一个看似无关的堆栈帖子类似:
编辑
由于ngController是在ngInit之前初始化的,为了让控制器中的数据一次可用,你应该使用ngInit将ngController包装在父元素中:
<div ng-init="player = 'one'">
<div ng-controller="JoystickCtrl">
...
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
原始答案
我认为简单的ng-init就足够了:
<div ng-controller="JoystickCtrl" ng-init="player='one'">...</div>
<div ng-controller="JoystickCtrl" ng-init="player='two'">...</div>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5449 次 |
| 最近记录: |