Angularjs 如何获取和运行value属性;{{aaa}}/{{bbb}}";在指令中?

Angularjs 如何获取和运行value属性;{{aaa}}/{{bbb}}";在指令中?,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我想用angular定义一个自定义指令。它可以根据一些自定义属性计算路径 HTML代码: <div ng-controller="Ctrl"> <input ng-model="ratio" /> <hr/> Image: <span retina-src="{{server}}/{{originWidth}}x{{originHeight}}{{uri}}" origin-width="111" origin-heig

我想用angular定义一个自定义指令。它可以根据一些自定义属性计算路径

HTML代码:

<div ng-controller="Ctrl">
  <input ng-model="ratio" />
  <hr/>
  Image:
  <span retina-src="{{server}}/{{originWidth}}x{{originHeight}}{{uri}}" 
        origin-width="111" origin-height="222" />
</div>
您可以看到我可以将视网膜src的文本显示为:

{{server}}/{{originWidth}}x{{originHeight}}{{uri}}
但我不知道如何评价它。我在代码中尝试了
$compile
,但它不起作用,而是报告了一些错误:

Error: [jqLite:nosel] http://errors.angularjs.org/1.2.14/jqLite/nosel
    at Error (native)
我还尝试了
scope.$eval(realPath)
,但它会报告一些其他错误



现场演示:

您需要$interpolate服务来替换卷曲表达式:即{{originWidth}

例如:

var url = $interpolate(iAttrs.retinaSrc)(scope.$parent);

注意:scope.$parent是必需的,因为您的指令具有独立的作用域。记住将$interpolate服务注入到指令函数中。

为什么不在您的作用域中添加
retinaSrc:'@'
?您可以将编译后的表达式值直接放在指令的范围内。
var url = $interpolate(iAttrs.retinaSrc)(scope.$parent);