从另一个范围

时间:2016-05-11 21:39:27

标签: javascript angularjs

在AngularJS中,您经常从工厂构建一个对象,通常占用与控制器不同的功能范围(尽管这可能是我的设计和实践问题)。假设您需要做一些逻辑(无论是在控制器,服务中,还是在您拥有的任何内容中,关键是逻辑需要在创建对象的不同范围内完成,因此未定义构造函数)

例如,您通常可能有:

Global scope
     Factory scope
         - Object returns
     Controller scope
          - Injection of factory returns the object

或者用更好的术语:

var x = (function() {
    function Thing() {}
    return new Thing();
})();
//How can I check x is instance of Thing if Thing is not defined in this scope?

我尝试了x instanceof Thingx.constructor == Thing,但显然固有的问题是范围内未定义Thing()构造函数。我怎么能克服这个(或者有什么实践),因为我认为这个问题非常不方便而且相当常见)?

1 个答案:

答案 0 :(得分:1)

解决方案是使用Angular DI处理应用程序中可能需要的所有内容。

  app
    .value('Thing', Thing)
    .factory('thing', function (Thing) {
      return new Thing;
    })
    .controller('Some', function (thing, Thing) {
      thing instanceof Thing === true;
    });

  function Thing() { ... }