簡體   English   中英

AngularJS 使用來自控制器的指令

[英]AngularJS use Directive from controller

我需要在 angular 1.6.* 中使用來自控制器的指令。

我用代碼解釋得更好。

控制器

$scope.directive = [
   "<span my-directive></span>",
   "<span my-directive2></span>",
   "<span my-directive3></span>"
]

HTML

<div>{{directive}}</div>

我的解決辦法是:

控制器

directive.forEach(function (item) {
    $compile(item)($scope).appendTo('.navbar');
})

HTML

<div class="navbar"></div>

但我的解決方案依賴於 DOM,是一個糟糕的解決方案。
我需要一個聰明的解決方案。

有任何想法嗎?

謝謝!

您可以創建自己的指令,該指令將為您執行此綁定,類似於ng-bindng-bind-html

請考慮以下示例:

指示

function MyBindCompileDirective($compile) {
    return {
        restrict: 'A',
        link(scope, elem, attrs) {
            attrs.$observe('myBindCompile', () => elem.html($compile(scope.myBindCompile)(scope).html()))
        }
    };
}

angular
    .module('app')
    .directive('myBindCompile', MyBindCompileDirective);

在 HTML 中的使用

<div ng-repeat="item in directives" my-bind-compile="item"></div>

我會在 ngRepeat 中迭代並直接放置指令,只更改需要的內容。 集合在控制器中定義

<div ng-repeat="model in collection">
 <span my-directive variable="model"></span>
</div>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM