Ich habe folgendes Plunker:AngularJS - Warum ist meine Direktive isolated scope variable nicht definiert?
http://plnkr.co/edit/7YUpQ1tEjnUaX01txFcK?p=preview
Als ich dies ausführen, wird templateUrl im Rahmen nicht definiert. Warum?
Meine Annahme hier ist, dass es versucht, eine Variable mit dem Namen template.html im übergeordneten Bereich zu finden, kann aber nicht, also es zu undefiniert zuweisen. Wenn ja, wie gebe ich dies als String statt als Scope-Variable ein?
Html:
<body ng-app="myApp">
<div ng-controller="TestCtrl">
<test-directive ng-model="testModel"
template-url="template.html">
</test-directive>
</div>
</body>
Js
var app = angular.module("myApp", []);
app.controller("TestCtrl", function($scope) {
$scope.testModel = {}
});
app.directive("testDirective", function() {
return {
restrict: 'E',
scope: {
model: "=ngModel",
templateUrl: "="
},
template: "<div ng-include='templateUrl'></div>",
link: function (scope, element, attrs) {
console.log(scope.templateUrl); // <-- Shows as undefined
}
}
});
Die API der Direktive wurde nach $ compile verschoben [https://docs.angularjs.org/api/ng/service/$compile] –
Ausgezeichnete Antwort, die den Unterschied im Detail erklärt: http://stackoverflow.com/a/14063373/3123195 –