2

考虑这个非常简单的 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在组件构造函数中访问对象并在其中定义值?

4

1 回答 1

4

最简洁的答案是不'。事实上,组件应该不需要直接访问 Scope 对象。

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

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

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

于 2014-01-13T17:30:56.400 回答