我试图通过父控制器作为指令属性传递的变量来指定要与指令一起使用的控制器的名称。
我跟踪了this帖子,并准备了以下指令。
angular.module('myApp', [])
.controller('parent', function($scope) {
$scope.scopeVar = 'child';
})
.controller('child', function($scope) {
$scope.msg = 'Hello';
})
.directive('myDir', function($rootScope) {
return {
template: '<div>Message: {{msg}}</div>',
controller: '@',
name: 'controllername'
};
});
&#13;
<!DOCTYPE html>
<html>
<head>
<script data-require="angularjs@1.5.8" data-semver="1.5.8" src="https://opensource.keycdn.com/angularjs/1.5.8/angular.min.js"></script>
<script src="script.js"></script>
</head>
<body ng-app="myApp" ng-controller="parent">
<my-dir controllername="{{scopeVar}}"></my-dir>
</body>
</html>
&#13;
问题是controllername
属性的值被视为字符串,而不是被解析为所需的值。
那就是我们硬编码
<my-dir controllername="child">
而不是
<my-dir controllername="{{scopeVar}}">
它有效(但那不是我想要的)