私は自分のビューを動的に変更する必要があるため、私は自分のオブジェクトとビューを変更するだけの方法が必要です。AngularJS 1.xで動的にディレクティブを読み込むことができない
私は次のように変数を使用して動的に指示をロードしようとしています:ここ
<body ng-app="myApp" ng-controller="myCtrl">
<button ng-repeat="type in testDirectiveJson" ng-click="setDirective(type)">{{type}}</button> {{newDirective}}
<load-directive type="newDirective"></load-directive>
<script src="./test.directive.js"></script>
</body>
は私のjs
var app = angular.module("myApp", []);
app.controller('myCtrl', function($scope) {
$scope.testDirectiveJson = {
first: '1-directive',
sec: '2-directive',
third: '3-directive',
}
$scope.lastName = "Doe";
$scope.newDirective = ""
$scope.setDirective = function(type) {
console.log(type);
$scope.newDirective = type;
$scope.$apply();
}
}).directive("loadDirective", function($compile) {
return {
scope: {
Dtype: '=type'
},
link: function(scope, element) {
var generatedTemplate = '<div ' + scope.Dtype +
' ></div>';
element.append($compile(generatedTemplate)(scope));
},
restrict: 'E'
};
}).directive("1Directive", function() {
return {
restrict: 'A',
template: "<h1>Made by a directive A!</h1>"
};
}).directive("2Directive", function() {
return {
restrict: 'A',
template: "<h1>Made by a directive! B</h1>"
};
}).directive("3Directive", function() {
return {
restrict: 'A',
template: "<h1>Made by a directive! C</h1>"
};
});
期待通りのが動作していないです。
ディレクティブを直接渡すとうまくいきます。
をコンパイルしますか? – Thierry
newDirective変数の$ watchを試しましたか?私はあなたがnewDirectiveの値が変更されたことを検出する必要がありますと思う。 –