J'ai une directive AngularJS nommée, areaOne
. Lorsque j'utilise template
le modèle est affiché mais lorsque j'utilise templateUrl
dans area1.js, le modèle HTML n'est pas rendu.Directive AngularJS: "templateUrl" ne fonctionne pas lorsque "template" fonctionne
Qu'est-ce qui me manque ici?
côté serveur: ASP.NET MVC 5
côté client: AngularJS 1
code source est disponible sur GitHub here.
Structure du projet:
Root
Scripts
app.js
directives
area1.js
templates
area1.html
Views
Home
Index.cshtml
Index.cshtml
@{
ViewBag.Title = "Index";
}
@section Scripts{
<script src="~/Scripts/angular.js"></script>
<script src="~/Scripts/app.js"></script>
<script src="~/Scripts/directives/area1.js"></script>
}
<h2>Index</h2>
<div ng-app="app">
<area-one></area-one>
</div>
app.js
(function() {
angular.module("app", []);
})();
area1.js
(function() {
angular.module("app")
.directive("areaOne", function() {
return {
restrict: 'E',
templateUrl: '~/templates/area1.html',
controller: function ($scope) {
$scope.button1Click = function() {
alert("button1 clicked");
}
}
}
});
})();
area1.html
<div>
<button id="button1" ng-click="button1Click()">Button 1</button>
</div>
Angular ne reconnaîtra pas le tilde dans votre chemin 'templateUrl' . Vous devrez le résoudre manuellement (voir https://stackoverflow.com/questions/7397939/how-to-render-the-relative-path-with-tilde-into-relative-path-in-jquer). – miqid