【问题标题】:Manual injection in DartDart 中的手动注入
【发布时间】:2014-04-22 21:44:04
【问题描述】:

如何在 angular dart 中手动注入实例?这将等效于 angularjs 中的以下内容:

var myInjector = angular.injector(["ng"]);
var $http = myInjector.get("$http");

【问题讨论】:

    标签: angularjs dependency-injection dart angular-dart


    【解决方案1】:

    组件内部的代码示例。

    @NgComponent(
        selector: 'rating',
        publishAs: 'ctrl')
    class RatingComponent {
      Injector _injector;
      RatingConfig _config;
    
      RatingComponent(this._injector) {
        _config = _injector.get(RatingConfig);
        // or
        _config = injectByName("RatingConfig");
      }
    
      void injectByName(String typeName) {
        _injector.types.takeWhile((Type e) {
          if (e.toString() == typeName) {
            _config = _injector.get(e);
            return false;
          }
          return true;
        });    
      }
    }
    

    【讨论】:

      【解决方案2】:

      使用 _injector.get(RatingConfig) 的方法会起作用。

      例如,过滤器代码在注入器上显式调用“get”以获取过滤器的实例:lib/core/filter.dart, line 50

      【讨论】:

        【解决方案3】:

        如果你需要手动注入实例,因为你在 main() 方法中,你可以执行以下操作:

        class MyAppModule extends Module {
          MyAppModule() {
            type(MyService);
          }
        }
        
        main() {
          Injector injector = applicationFactory().addModule(new MyAppModule()).run();
          MyService myService = injector.get(MyService);
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-12-25
          • 2017-01-17
          • 1970-01-01
          • 2016-11-09
          • 2017-03-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多