我完全是初学者使用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值时。
注意我用[[]]作为插补器。
非常感谢任何帮助。
感谢。
答案 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)
确保在获取模板之前正确配置插值。 (在引导期间,在应用程序的其余部分运行之前!) 在您刚开始使用时,我建议您坚持使用默认设置,直到您熟悉这些概念以及如何调试问题为止。