簡體   English   中英

帶有ng-click的Angularjs指令

[英]Angularjs directive with ng-click

我是Angularjs的新手,正在嘗試創建一個字典指令,該指令搜索和替換帶有定位標記的文本。 搜索和替換部分工作正常,但我無法使ng-click正常工作。

HTML

<div mk-dct>Lorem ipsum [dolor] sit [amet]</div>


app.directive('mkDct', function () {
var pattern = /\[([^\]]+)\]/g;
return {
    restrict: 'A',
    link: function(scope, element, attrs) {
        var txt = element.html();
        var m = txt.match(pattern);

        for(var i = 0; i < m.length; i++){
            var word = m[i].substring(1, m[i].length-1);
            txt = txt.replace(m[i], '<a class="dict-item" ng-click="func(\''+word+'\')" href="#">'+ word + '</a>');
        }

        element.html(txt);
    }
};

UPDATE
下面的注釋行使其按預期運行。

app.directive('mkDct', function ($compile) {
var pattern = /\[([^\]]+)\]/g;
return {
    restrict: 'A',
    scope: true,
    link: function(scope, element, attrs) {
        var txt = element.html();
        var m = txt.match(pattern);

        for(var i = 0; i < m.length; i++){
            var word = m[i].substring(1, m[i].length-1);
            txt = txt.replace(m[i], '<a class="dict-item" ng-click="func(\''+word+'\')" href="#">'+ word + '</a>');
        }

        // Compile to template.
        txt = $compile(txt)(scope);

        // Clear and append.
        element.empty().append(txt);
    }
};

});

您需要編譯您的元素。

編輯循環后添加編譯語句,如下面的注釋所述。

txt = $compile(txt)(scope);

暫無
暫無

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

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