M J*_*M J 4 javascript angularjs
参考下面的例子,有没有办法使用myCtrl而不是myCtrl2,将参数作为本地传递而不是附加到$ scope?
在$控制服务执行完全相同包装现有控制器所需的操作,但它不能从模板访问.
<div ng-app>
<script type="text/ng-template" id="/tpl.html">
value of y: {{y}}
</script>
<div
ng-repeat='x in [1,2,3]'
ng-controller='myCtrl2'
ng-include="'/tpl.html'">
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
function myCtrl($scope, x){
$scope.y = x * 20;
}
function myCtrl2($scope){
$scope.y = $scope.x * 20;
}
Run Code Online (Sandbox Code Playgroud)
Mic*_*ley 12
我无法很从你的问题,你在找什么exatly的说,但你可以尝试创建自己的指令(修改后的版本的ngController指令)可以指定控制器注射剂:
app.directive('myController', function($controller) {
return {
scope: true,
link: function(scope, elem, attrs) {
var locals = scope.$eval(attrs.locals);
angular.extend(locals, {$scope: scope});
$controller(attrs.myController, locals);
}
};
});
Run Code Online (Sandbox Code Playgroud)
你可以使用这样的东西:
<div my-controller='MainController' locals='{x: "test", y: 42}'></div>
Run Code Online (Sandbox Code Playgroud)
这是一个演示技术的JsFiddle:http://jsfiddle.net/BinaryMuse/qBZZk/
| 归档时间: |
|
| 查看次数: |
1790 次 |
| 最近记录: |