我正在使用@将"/foo/bar/{{value}}"
作为字符串传递给指令,因此我可以使用interpolate方法为下拉列表构建href。我认为angular在编译时会寻找值而不是将整个事物作为字符串传递。这在角度v1.2.0中工作正常。
指令代码就像,
return {
templateUrl: '/views/directives/directive-name.html',
restrict: 'E',
replace: true,
scope: {
title: '@',
optHref: '@'
},
link: link: function postLink(scope, element, attrs) {
var hrefFormatter;
hrefFormatter = $interpolate(attrs.optHref);
scope.getHref = function(value, label) {
return hrefFormatter({ value: value, label: label });
};
}
调用类似,
<directive-name
title ="name"
opt-href="/foo/bar/{{value}}" <
</directive-name>
感谢关于角度可能发生变化的任何指针,以引起这个或其他指针。
答案 0 :(得分:1)
而不是:
opt-href="/foo/bar/{{value}}"
试试这个:
opt-href="'/foo/bar/{{value}}'"
请注意额外的'
。
答案 1 :(得分:0)
谢谢Michal!在链接之前使用控制器函数来保留范围中的attrs.optHref
。像,
controller: function ($scope, $element, $attrs) {
$scope.optHref = $attrs.optHref;
}
在控制器功能中,{{value}}
已在范围内插入,但存在于attrs中。但是在链接中fn {{value}}
也在attrs中进行了插值 - 因此将其保留在范围内并在链接fn中使用scope.optHref
。