これは実際の問題の単純化されたバージョンですが、何が起こっているのか、どのように修正するのかを理解したいと思います。私はそれにバインドされているパラメータに異なるテンプレートを読み込まなければなりません。ビジュアルディレクティブダイナミックテンプレートがバインディングで機能しない
var app = angular.module('my_app', [])
.controller('controller', Controller)
.directive('dirTwo', DirTwo);
function Controller() {
var este = this;
this.list = ["number", "text", "text"];
this.change = function() {
this.list = this.list.reverse();
}
}
function DirTwo() {
return {
restrict: 'E',
//template: ' Name: {{name}}{{type}}',
template: my_template,
scope: {
type: "="
},
link: function($scope) {
$scope.name = "Pepito";
console.log("scope type: " + $scope.type);
}
}
}
var my_template = function(elem, attrs, $scope) {
console.log("template type: " + attrs.type);
switch (attrs.type) {
case 'number':
return '<a href="#">{{type}}</a>';
break;
default:
return ' ---- '
break;
}
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"></script>
<div class="app" ng-app="my_app" ng-controller="controller as App">
<p>{{App.list}}
<button ng-click="App.change()">Reverse</button>
</p>
<dir-two ng-repeat="item in App.list track by $index" type="item"></dir-two>
</div>
テンプレート関数のログは、ワードitem
代わりにnumber
又はtext
を印刷します。テンプレートを正しくロードするにはどうすれば修正できますか?
'type {" {item}} "'を試しましたか? – GillesC
@GillesC、試してみたところ、エラーはさらに大きくなりました!実際、バインディングはリンク関数では動作しますが、テンプレートでは動作しません。 – Vandervals