javascript - 隔离范围在 Angular 1.2.0rc3 和 1.2.14 中的行为有所不同

标签 javascript angularjs

我是 Angular 新手,目前正在尝试理解 Angular 指令。我在我的机器上使用 Angular 1.2.14。我创建了两种类型的指令,一种是使用 scope: {} (隔离范围)创建的,另一种是使用 scope: true (继承范围)创建的。

<!doctype html>
<html lang="en" ng-app="myApp">
<head>
  <meta charset="UTF-8">
  <title>Directive 10</title>
</head>
<body>

<div ng-init="myvar = 'MyVar!' "></div>
Level A : {{ myvar }}
<div my-true-dir>
  Level B : {{ myvar }}
</div>
<div my-obj-dir>
  Level C: {{ myvar }}
</div>

<script src="js/angular.js"></script>
<script>
var app = angular.module('myApp', []);
app.directive('myTrueDir', function() {
  return {
    scope: true
  };
});
app.directive('myObjDir', function() {
  return {
    scope: {}
  };
});
</script>
</body>
</html>

根据ng-book中的描述,隔离作用域将无法访问外部作用域,反之亦然。这意味着在级别 3 中,它不应该访问在外部作用域中声明的 myvar。但是当我运行给定的代码时,我得到了这个。

Level A : MyVar!
Level B : MyVar!
Level C: MyVar!

我以为这可能是ng-book的错误,但是当我在angular.js 1.2.0rc3中运行这段代码时,结果正如ng-book中所描述的那样,即:

Level A : MyVar!
Level B : MyVar!
Level C: 

有人可以在这里提供线索吗?
Angular 1.2.14 的代码和结果可以是 found here ,还有 Angular 1.2.0rc3 can be found here 的那个.

最佳答案

看来你被this regression咬了在 1.2.0 中引入(及时交付)。其应有的修复版本是1.3.0-beta.1。

请参阅changelog entry .

此更改假设(几乎)没有人会在不定义模板的情况下编写指令,因此要解决此问题,只需在指令中添加模板定义即可。

关于javascript - 隔离范围在 Angular 1.2.0rc3 和 1.2.14 中的行为有所不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22269021/

相关文章:

javascript - Node.JS - 如何有条件地停止管道流

javascript - 我如何使用 javascript 变量在网站中输入文本?

javascript - 忽略了对未接受模块的更新

javascript - 如何使用webpack在ngDialog模板中查找html文件?

javascript - Angular Directive 将属性解释为字符串

django - AngularJS REST 应用程序 - 设计优化

javascript - Backbone.js - 在 View 处于事件状态时添加按键事件?

javascript - 使用构造函数弹跳动画?

angularjs - Jasmine + Angular 模块常量

javascript - 如何在 Angular ng-repeat 中按类别键过滤数组中的对象