如何获取作为属性传递给指令的非解析角度表达式?

时间:2016-02-23 11:27:26

标签: angularjs interpolation directive

这是使用角度1.4.8。

我需要使用其属性将包含角度表达式的HTML字符串传递给指令。表达式被解析,我只得到结果字符串:

    <dynamic-template tpl = "selected: {{selection}}"/>

见下面的&#34;断点&#34;评论。到达那里,我需要有角度表达式(包含{{}})而不是结果字符串。

angular.module("sandbox").directive('dynamic-template', [function() {
        return {
            'replace'       : true,
            'transclude'    : true,             
            'bindToController'  : true,

            'compile': function (tElement, tAttrs) {
                return {
                    pre: function preLink(scope, element, attrs, controller){
                        controller.tpl = attrs.tpl; // breakpoint here
                    },

                    post: function (scope, element, attrs, controller){
                        controller.element = element;
                    }
                }
            }
        }
    }
]);

这可以根据自定义表达式动态插值显示值。 怎么能实现呢?我希望在预编译中检查属性值会有所帮助。它仍然提供插值。

1 个答案:

答案 0 :(得分:1)

在compileFunction中完成你的工作,没有内插,你得到选中的:{{selection}}字符串:

angular.module("sandbox").directive('dynamic-template', [function() {
    return {
        'replace'       : true,
        'transclude'    : true,
        'bindToController'  : true,
        'compile': CompileFunction
    };

    function CompileFunction(element, attrs) {
        // attrs.tpl
        return PostLinkFunction;
    }

    function PostLinkFunction(scope, element, attrs) {
    }
}
]);