每次输入属性改变时,如何使指令调用函数?

时间:2014-01-02 15:46:04

标签: angularjs

我的HTML中有以下内容:

<markdown abc="{{ q.qv.text }}"></markdown>

和这个指令:

app.directive('markdown', function () {
    var converter = new Showdown.converter();
    return {
        restrict: 'E',
        link: function (scope, element, attrs) {
            var htmlText = converter.makeHtml(attrs.abc);
            element.html(htmlText);
        }
    }
});

当页面出现时,我进行HTTP调用以获取数据,该指令有效,获取q.qv.text的 last 值并显示它。在此之后,HTTP调用返回并填充q.qv.text。

但到那时q.qv.text的值已经显示。

如何才能使该指令对q.qv.text中的更改做出反应并调用converter.makeHTML来处理新值?

1 个答案:

答案 0 :(得分:2)

你把手表放在变量上: AngularJS Watch

    app.directive('markdown', function () {
        var converter = new Showdown.converter();
        return {
            restrict: 'E',
        scope: {
                    abc: '=abc'
                }
            link: function (scope, element, attrs) {
               scope.$watch('abc',function(newvalue){
                 element.html(newvalue);
               });

            }
        }
    });