コード例 #1
0
ファイル: application.js プロジェクト: jeremykenedy/ember.js
  buildRegistry: function(namespace) {
    var registry = new Registry();

    registry.set = set;
    registry.resolver = resolverFor(namespace);
    registry.normalizeFullName = registry.resolver.normalize;
    registry.describe = registry.resolver.describe;
    registry.makeToString = registry.resolver.makeToString;

    registry.optionsForType('component', { singleton: false });
    registry.optionsForType('view', { singleton: false });
    registry.optionsForType('template', { instantiate: false });
    registry.optionsForType('helper', { instantiate: false });

    registry.register('application:main', namespace, { instantiate: false });

    registry.register('controller:basic', Controller, { instantiate: false });
    registry.register('controller:object', ObjectController, { instantiate: false });
    registry.register('controller:array', ArrayController, { instantiate: false });

    registry.register('view:select', SelectView);

    registry.register('route:basic', Route, { instantiate: false });
    registry.register('event_dispatcher:main', EventDispatcher);

    registry.register('router:main',  Router);
    registry.injection('router:main', 'namespace', 'application:main');

    registry.register('location:auto', AutoLocation);
    registry.register('location:hash', HashLocation);
    registry.register('location:history', HistoryLocation);
    registry.register('location:none', NoneLocation);

    registry.injection('controller', 'target', 'router:main');
    registry.injection('controller', 'namespace', 'application:main');

    registry.register('-bucket-cache:main', BucketCache);
    registry.injection('router', '_bucketCache', '-bucket-cache:main');
    registry.injection('route',  '_bucketCache', '-bucket-cache:main');
    registry.injection('controller',  '_bucketCache', '-bucket-cache:main');

    registry.injection('route', 'router', 'router:main');
    registry.injection('location', 'rootURL', '-location-setting:root-url');

    // DEBUGGING
    registry.register('resolver-for-debugging:main', registry.resolver.__resolver__, { instantiate: false });
    registry.injection('container-debug-adapter:main', 'resolver', 'resolver-for-debugging:main');
    registry.injection('data-adapter:main', 'containerDebugAdapter', 'container-debug-adapter:main');
    // Custom resolver authors may want to register their own ContainerDebugAdapter with this key

    registry.register('container-debug-adapter:main', ContainerDebugAdapter);

    return registry;
  }
コード例 #2
0
ファイル: utils.js プロジェクト: BokhanMax/ember.js
function buildRegistry(namespace) {
  var registry = new Registry();

  registry.set = set;
  registry.resolver = resolverFor(namespace);
  registry.optionsForType("view", { singleton: false });
  registry.optionsForType("template", { instantiate: false });
  registry.register("application:main", namespace, { instantiate: false });
  registry.injection("router:main", "namespace", "application:main");

  registry.register("location:hash", HashLocation);

  registry.register("controller:basic", Controller, { instantiate: false });
  registry.register("controller:object", ObjectController, { instantiate: false });
  registry.register("controller:array", ArrayController, { instantiate: false });

  registry.register("view:default", _MetamorphView);
  registry.register("view:toplevel", EmberView.extend());
  registry.register("view:-outlet", OutletView);
  registry.register("view:core-outlet", CoreOutletView);
  registry.register("router:main", EmberRouter.extend());

  registry.typeInjection("route", "router", "router:main");

  return registry;
}
コード例 #3
0
ファイル: utils.js プロジェクト: antigremlin/ember.js
function buildRegistry(namespace) {
  var registry = new Registry();

  registry.set = set;
  registry.resolver = resolverFor(namespace);
  registry.optionsForType('view', { singleton: false });
  registry.optionsForType('template', { instantiate: false });
  registry.register('application:main', namespace, { instantiate: false });
  registry.injection('router:main', 'namespace', 'application:main');

  registry.register('location:hash', HashLocation);

  registry.register('controller:basic', Controller, { instantiate: false });
  registry.register('controller:object', ObjectController, { instantiate: false });
  registry.register('controller:array', ArrayController, { instantiate: false });

  registry.register('view:toplevel', EmberView.extend());
  registry.register('view:-outlet', OutletView);
  registry.register('view:core-outlet', CoreOutletView);
  registry.register('router:main', EmberRouter.extend());

  registry.typeInjection('route', 'router', 'router:main');

  return registry;
}
コード例 #4
0
ファイル: route_test.js プロジェクト: fitbodylife/ember.js
test("'store' can be injected by data persistence frameworks", function() {
  expect(8);
  run(route, 'destroy');

  var registry = new Registry();
  var container = registry.container();
  var post = {
    id: 1
  };

  var Store = EmberObject.extend({
    find: function(type, value){
      ok(true, 'injected model was called');
      equal(type, 'post', 'correct type was called');
      equal(value, 1, 'correct value was called');
      return post;
    }
  });

  registry.register('route:index',  EmberRoute);
  registry.register('store:main', Store);

  registry.injection('route', 'store', 'store:main');

  route = container.lookup('route:index');

  equal(route.model({ post_id: 1}), post, '#model returns the correct post');
  equal(route.findModel('post', 1), post, '#findModel returns the correct post');
});
コード例 #5
0
QUnit.test('Injecting a falsy value does not raise an error', function() {
  var registry = new Registry();
  var container = registry.container();
  var ApplicationController = factory();

  registry.register('controller:application', ApplicationController);
  registry.register('user:current', null, { instantiate: false });
  registry.injection('controller:application', 'currentUser', 'user:current');

  strictEqual(container.lookup('controller:application').currentUser, null);
});
コード例 #6
0
ファイル: router_test.js プロジェクト: cuzisaidso/ember.js
  setup: function() {
    registry = new Registry();
    container = registry.container();

    //register the HashLocation (the default)
    registry.register('location:hash', HashLocation);

    // ensure rootURL is injected into any locations
    registry.injection('location', 'rootURL', '-location-setting:root-url');

    Router = EmberRouter.extend();
  },
コード例 #7
0
QUnit.test('An injected non-singleton instance is never cached', function() {
  var registry = new Registry();
  var container = registry.container();
  var PostView = factory();
  var PostViewHelper = factory();

  registry.register('view:post', PostView, { singleton: false });
  registry.register('view_helper:post', PostViewHelper, { singleton: false });
  registry.injection('view:post', 'viewHelper', 'view_helper:post');

  var postView1 = container.lookup('view:post');
  var postView2 = container.lookup('view:post');

  ok(postView1.viewHelper !== postView2.viewHelper, 'Injected non-singletons are not cached');
});
コード例 #8
0
QUnit.test('fallback for to create time injections if factory has no extend', function() {
  var registry = new Registry();
  var container = registry.container();
  var AppleController = factory();
  var PostController = factory();

  PostController.extend = undefined; // remove extend

  registry.register('controller:apple', AppleController);
  registry.register('controller:post', PostController);
  registry.injection('controller:post', 'apple', 'controller:apple');

  var postController = container.lookup('controller:post');

  equal(postController._debugContainerKey, 'controller:post', 'instance receives _debugContainerKey');
  ok(postController.apple instanceof AppleController, 'instance receives an apple of instance AppleController');
});
コード例 #9
0
QUnit.test('An individual factory with a registered injection receives the injection', function() {
  var registry = new Registry();
  var container = registry.container();
  var PostController = factory();
  var Store = factory();

  registry.register('controller:post', PostController);
  registry.register('store:main', Store);

  registry.injection('controller:post', 'store', 'store:main');

  var postController = container.lookup('controller:post');
  var store = container.lookup('store:main');

  equal(store._debugContainerKey, 'store:main');

  equal(postController._debugContainerKey, 'controller:post');
  equal(postController.store, store, 'has the correct store injected');
});
コード例 #10
0
ファイル: outlet_test.js プロジェクト: zhangmazi/ember.js
var buildRegistry = function(namespace) {
  var registry = new Registry();

  registry.set = set;
  registry.resolver = resolverFor(namespace);
  registry.optionsForType('view', { singleton: false });
  registry.optionsForType('template', { instantiate: false });
  registry.register('application:main', namespace, { instantiate: false });
  registry.injection('router:main', 'namespace', 'application:main');

  registry.register('location:hash', HashLocation);

  registry.register('controller:basic', Controller, { instantiate: false });
  registry.register('controller:object', ObjectController, { instantiate: false });
  registry.register('controller:array', ArrayController, { instantiate: false });

  registry.typeInjection('route', 'router', 'router:main');

  return registry;
};
コード例 #11
0
QUnit.test('Injecting a failed lookup raises an error', function() {
  ENV.MODEL_FACTORY_INJECTIONS = true;

  var registry = new Registry();
  var container = registry.container();

  var fooInstance = {};
  var fooFactory  = {};

  var Foo = {
    create(args) { return fooInstance; },
    extend(args) { return fooFactory;  }
  };

  registry.register('model:foo', Foo);
  registry.injection('model:foo', 'store', 'store:main');

  throws(function() {
    container.lookup('model:foo');
  });
});
コード例 #12
0
QUnit.test('A factory with both type and individual injections', function() {
  var registry = new Registry();
  var container = registry.container();
  var PostController = factory();
  var Store = factory();
  var Router = factory();

  registry.register('controller:post', PostController);
  registry.register('store:main', Store);
  registry.register('router:main', Router);

  registry.injection('controller:post', 'store', 'store:main');
  registry.typeInjection('controller', 'router', 'router:main');

  var postController = container.lookup('controller:post');
  var store = container.lookup('store:main');
  var router = container.lookup('router:main');

  equal(postController.store, store);
  equal(postController.router, router);
});
コード例 #13
0
QUnit.test('Destroying the container destroys any cached singletons', function() {
  var registry = new Registry();
  var container = registry.container();
  var PostController = factory();
  var PostView = factory();
  var template = function() {};

  registry.register('controller:post', PostController);
  registry.register('view:post', PostView, { singleton: false });
  registry.register('template:post', template, { instantiate: false });

  registry.injection('controller:post', 'postView', 'view:post');

  var postController = container.lookup('controller:post');
  var postView = postController.postView;

  ok(postView instanceof PostView, 'The non-singleton was injected');

  container.destroy();

  ok(postController.isDestroyed, 'Singletons are destroyed');
  ok(!postView.isDestroyed, 'Non-singletons are not destroyed');
});
コード例 #14
0
ファイル: application.js プロジェクト: mjc/ngular
    registry.makeToString = registry.resolver.makeToString;

    registry.optionsForType('component', { singleton: false });
    registry.optionsForType('view', { singleton: false });
    registry.optionsForType('template', { instantiate: false });
    registry.optionsForType('helper', { instantiate: false });

    registry.register('application:main', namespace, { instantiate: false });

    registry.register('controller:basic', Controller, { instantiate: false });
    registry.register('controller:object', ObjectController, { instantiate: false });
    registry.register('controller:array', ArrayController, { instantiate: false });

    registry.register('renderer:-dom', { create() { return new Renderer(new DOMHelper()); } });

    registry.injection('view', 'renderer', 'renderer:-dom');
    registry.register('view:select', SelectView);
    registry.register('view:-outlet', OutletView);

    registry.register('-view-registry:main', { create() { return {}; } });

    registry.injection('view', '_viewRegistry', '-view-registry:main');

    registry.register('view:default', _MetamorphView);
    registry.register('view:toplevel', NgularView.extend());

    registry.register('route:basic', Route, { instantiate: false });
    registry.register('event_dispatcher:main', EventDispatcher);

    registry.injection('router:main', 'namespace', 'application:main');
    registry.injection('view:-outlet', 'namespace', 'application:main');