具有隔离范围的指令内的数据

时间:2014-04-10 11:44:16

标签: angularjs

您认为表达式{{myProperty}}的价值应该是什么?不应该是未定义的吗?

<div ng-init="myProperty = 'WOW, this is cool'"></div>
<div my-directive>
Inside myDirective, isolate scope: {{ myProperty }}
<div>

<script>
angular.module('app', [])
.directive('myDirective', function() {
  return {
    restrict: 'A',
    scope: {}
  };
});
</script>

这里http://jsbin.com/diquzuba/1/edit这是一个简单的例子。

谢谢。

2 个答案:

答案 0 :(得分:1)

在您的示例中,{{ myProperty }}在主模板范围内进行评估,因为您的指令未定义自己的模板。

如果您使用设置创建模板,它仍会显示WOW, this is cool,因为转换会将正确的父范围应用于已转换的内容。

另一方面,如果您在指令中定义新模板而未指定转换,并尝试在此模板中使用{{ myProperty }},那么它将为undefined

答案 1 :(得分:1)

<div my-directive>
Inside myDirective, isolate scope: {{ myProperty }}
<div>

指令中的

restrict: 'A',
scope: {}

这个是。指令本质上是代码,有时用模板丰富。不要将指令与DOM元素混淆。想象一下:

<div my-directive another-directive yet-another-one>
{{ myProperty }}
<div>

如果这些指令中的每一个都有一个隔离范围,那么指令将{{ myProperty }}内,如果它真的在指令中?