AngularDart依赖注入如何工作?

时间:2013-12-20 21:37:13

标签: dependency-injection dart angular-dart

我有一个需要从Dart代码访问其根元素的组件。通过在SO上阅读Differences between Angular.js and Angular.dart?并在AngularDart源代码中进行浏览,我发现我需要的是提供具有显式类型参数的构造函数。如果其中一个参数的类型为dom.Element,则它将通过Angular注入器为我的组件root提供引用。 (在构造函数参数上没有类型会导致在Angular内部中从内到外抛出异常NoSuchMethodError : method not found: 'simpleName'。)我的代码现在看起来像这样:

@ng.NgComponent (
    selector: 'math',
    templateUrl: 'packages/embarassing_name_of_my_package/math/math_component.html',
    publishAs: 'ctrl'
)
class MathComponent {
  ng.Scope _scope;
  dom.Element _element;
  ng.NgModel _ngModel;
  ng.NodeAttrs _attrs;

  MathComponent(this._scope, this._element, this._ngModel, this._attrs);

  …
}

ngdom

import 'package:angular/angular.dart' as ng;
import 'dart:html' as dom;

现在的问题。我如何最好地发现喷射器对其作出反应的特殊类型?

此外,我想知道:它是否记录在某处?哪里?如果没有,AngularDart源中的哪个位置的进样器配置为这样?

1 个答案:

答案 0 :(得分:1)

使用Module.type()方法(或工厂,值)注册类。

您可以查看Angular.dart source - search for 'type(' like lib/core/module.dart

(请忽略type不是函数名称的结果)

当Angular调用的构造函数或方法需要参数DI查找其注册的类型/值/工厂并使用提供的实例(值)或创建新实例(类型)或使用工厂返回的结果时注入它。