新しいカスタムanglejs指示文(d-emails)を作成しました。このディレクティブのテンプレートには、 "ng-if"ディレクティブが含まれています。そして、この指示文では、 "replace:true"を見ることができます。この主な理由は、指示文の中でユーザーの役割をチェックしたいからです。ユーザーがhtmlから要素全体を削除する適切な役割を持っていないとします。私はhtmlの中にclass = "col-sm-6"という要素を残したくない。しかし、私がこのコードを書いたとき、私はこの場合、隔離されたスコープを使うことができないことを認識しています。 Ng - 孤立スコープが削除され、親スコープから継承された新しいスコープが追加されました。どのようにこの状況を管理するための任意の提案? このような質問はIssue with isolated scope and "replace: true" in angular directiveのように見えましたが、適切な解決策が見つかりませんでした。角度指示文でng-ifを "replace:true"に変更する
D-emails.tmpl.htmlはこのようになりますfunction dEmails() {
var directive = {
scope: {},
bindToController: {
entityId: "=",
entityType: "="
},
controllerAs: "vm",
templateUrl: "/directives/d-emails.tmpl.html",
restrict: "E",
controller: dEmailsController,
replace: true
};
return directive;
}
dEmailsController.$inject = ['roleService'];
function dEmailsController(roleService) {
var vm = this;
init();
var roleId = 4;
vm.isApproved = false;
function init() {
roleService.hasRole(roleId).then(function(isApproved) {
vm.isApproved = isApproved;
if (isApproved) {
emailResource.get({ entityId: vm.entityId, entityType: vm.entityType }).$promise.then(function(response) {
vm.list = response.Result;
});
}
});
}
}
:だけの要素を削除する場合はNGを-
<d-emails class="col-sm-6" entity-id="vm.entityId" entity-type="vm.entityType.event">
</d-emails>
ありがとうございました!場合によっては、反対側の問題を見るのが有益な場合もあります: –
この解決策にもう一度コメントしてください。この場合のテンプレートは前にレンダリングされます。もちろん、テンプレートのルートに "ng-show"のようなものを追加することはできますが、これが最善の解決策ではないと私は考えています。 –