2

を使用してコントローラー名を指定する代わりにng-controller、ディレクティブの属性を介してコントローラー名を指定し、テンプレートでそれを置き換えたいです (AngularJS を探索するためだけにこの奇妙な方法を実行したい)。

プランクへのリンクは次のとおりです: http://plnkr.co/edit/KZgLQ6?p=preview

たとえば、私がやろうとしていること

<sample-drtv ctrl-name="drtvCtrl"></sample-drtv>

テンプレート(sampleDrtv.html):

<div ng-controller="{{ctrlName}}"> 
  <p>{{ptagcontent}}</p>  
</div>

指令コード:

var myModule = angular.module('ng');

myModule.directive('sampleDrtv',[function(){
    return {
        restrict: "E",
            replace: true,
            templateUrl: "sampleDrtv.html",
            scope: {},
            controller: function($scope,$element,$attrs){
                $scope.ctrlName = $attrs.ctrlName;
                console.log($scope);
            }
        };

}]);

function drtvCtrl($scope){
  $scope.ptagcontent = "AngularJS Rocks";  
}

コンソールに次のエラーが表示されます。

Error: Argument '{{ctrlName}}' is not a function, got undefined

ctrlName式で置き換えられるように何をすべきかについてのアイデアはありますか? 私はディレクティブの概念を完全には理解していないと確信しているので、間違いを犯していますか?

4

1 に答える 1