不确定,如何更多地描述这个问题。所以有简单的代码和jsfiddle
HTML
<div>
<span format="the value is: {{value||'no-val'}}" value="100" my-test></span>
</div>
和javascript
App.directive('myTest', function() {
return {
restrict: 'A',
replace: true,
scope: {
format: '@'
},
template: "<span>{{format}}</span>",
link: function($scope, element, attrs) {
$scope.value = attrs.value
}
}
})
我的期望<span>the value is: 100</span>
现实<span>the value is: no-val</span>
感谢您的解释!
答案 0 :(得分:1)
在插入value
时,需要引用控制器中的作用域属性。
所以,你需要添加一个控制器:
App.controller('Ctrl', function($scope) {
$scope.value = 100;
})
并使用ng-controller
:
<div ng-controller="Ctrl">
value
上的<span>
属性不会自动绑定到角度范围。
修改强>
如果你真的想在指令中插入模板,你可以覆盖指令中的compile
函数:
App.directive('myTest', function($compile) {
return {
restrict: 'A',
scope: {
value: '@'
},
compile:function(element, attrs) {
var strTemplate = "<span>{{" + attrs.format +"}}</span>";
element.replaceWith(strTemplate);
}
}
})
要做到这一点,不要在html中进行插值,只需在指令中发送要插入的文本:
<span format="value || 'no-val'" value="100" my-test></span>
以下是显示此内容的adapted working fiddle。