2013-12-20 3 views
3

У меня есть компонент, которому необходимо получить доступ к его корневому элементу из кода Дарта. Прочитав Differences between Angular.js and Angular.dart? здесь, на SO и grepping в исходном коде AngularDart, я понял, что мне нужно предоставить конструктор с явно типизированными аргументами. Если один из аргументов имеет тип dom.Element, ему будет дана ссылка на мой компонентный корень с помощью углового инжектора. (. В противном случае иметь типов по результатам аргументов конструктора в виде исключения NoSuchMethodError : method not found: 'simpleName' будучи выброшен из глубоко в угловых внутренностей) Мой код теперь выглядит следующим образом:Как работает инъекция зависимости AngularDart?

@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); 

    … 
} 

с ng и dom быть

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

Теперь вопрос. Как лучше всего найти те особые типы, на которые реагирует инжектор?

Кроме того, я хотел бы знать: документально ли он где-то? Где? Если нет, то где в источнике AngularDart инжектор настроен так себя вести?

ответ

1

Занятия регистрируются с использованием метода Module.type() (или заводского значения).

Вы можете посмотреть на Angular.dart source - search for 'type(' like lib/core/module.dart

(Просьба игнорировать результаты, где type не имя функции)

Когда конструктор или метод, названный по угловому необходим параметр DI просматривает свою зарегистрированных типов/значений/фабрик и использует предоставленный экземпляр (значение) или создает новый экземпляр (тип) или использует результат, который возвращает фабрика и вводит его.

Смежные вопросы