AngularJS Directive提取的templateUrl不起作用

时间:2016-05-03 12:05:57

标签: angularjs

我完全是初学者使用AngularJS1

我现在所做的是使用以下代码创建我自己的自定义指令:

var ui = angular.module('ui',[ 'core' ]);

ui.directive( 'shTag', function(){
    return {
        restrict: 'E',
        scope: {
            text: '=',
        },
        link: function(scope, element, attrs){
            scope.type = attrs.type;
        },
        templateUrl: config.base_url + "/directive/tag",
    }
});

正如您所见,templateUrl是在我的后端获取的,它只是将html作为响应返回。

这是请求的回复:

<span class="" > [[ scope.text ]]</span>

但是当它没有显示scope.text值时。

注意我用[[]]作为插补器。

非常感谢任何帮助。

感谢。

3 个答案:

答案 0 :(得分:1)

假设您已正确配置$ interpolateProvider以使[[ ]]正常工作,请按照Alainlb所述使用[[text]],并确保您拥有属性值&#39; text&#39;设置您的标记用法如下:

<sh-tag text="'display me to the world'"></sh-tag>

由于您使用的是隔离范围,因此text具有值的唯一方法是为该属性指定值。注意我在这里使用了一个字符串,但这可能是父范围的变量。

我还建议您在检查员中检查您的网络,以确保请求通过(网址100%正确)为templateUrl。

除此之外,一切看起来都不错。

答案 1 :(得分:1)

由于您未使用controllerAs: 'scope'语法,因此您不必使用scope.text,只需使用[[ text ]]

$ scope上的所有内容都可以在你的指令中找到。

(另外:看看角度为1.5的组件,他们添加一些语法糖,并且非常性感)

答案 2 :(得分:0)

确保在获取模板之前正确配置插值。 (在引导期间,在应用程序的其余部分运行之前!) 在您刚开始使用时,我建议您坚持使用默认设置,直到您熟悉这些概念以及如何调试问题为止。