在 Angular Dart 组件的构造函数中将键和值分配给范围



考虑这个非常简单的Angular Dart组件:

import 'package:angular/angular.dart';
@NgComponent(
    selector: 'el',
    templateUrl: './component.html',
    publishAs: 'ctrl',
    map: const {
      'foo': '@foo'
    }
)
class MyElement {
  String foo;
  MyElement(Scope scope) {
    scope['bar'] = 'bar';
  }
}

foo字段作为属性传递,bar"字段"添加到构造函数中的scope

这允许在视图中使用以下用途:

<div>{{ctrl.foo}}</div>
<div>{{bar}}</div>

foo前面需要加上ctrl,但bar不需要。在这个特定示例中,将字段直接添加到范围似乎是一种糟糕的模式,但是是否有访问组件构造函数中的scope对象并在其中定义值的常见用例?

简短的回答是"否"。 事实上,组件不需要直接访问 Scope 对象。

这是对AngularJS(1.0,1.2)语法的改进。 在 AngularDart 中,从组件设置显式$watch以及设置范围属性大多已经过时。

  • AngularDart 不是设置范围属性,而是使用 publishAs 注释来设置作用域的属性(前缀为 ctrl )。
  • 组件不是监视,而是定义元素属性和类成员之间的映射。

编写指令时,访问Scope仍然很有用。 例如 ng-repeat将使用 Scope 对象创建子作用域并设置 $index 属性。

最新更新