diff --git a/packages/ember-routing/lib/system/route.js b/packages/ember-routing/lib/system/route.js index 44fefd374f8..151bd530f8f 100644 --- a/packages/ember-routing/lib/system/route.js +++ b/packages/ember-routing/lib/system/route.js @@ -554,6 +554,16 @@ Ember.Route = Ember.Object.extend({ return controller; }, + /** + Return a new view instance for the given name + + @method viewFor + @param {String} name of the view + @return {Ember.View} instance of the view + */ + viewFor: function(name) { + return this.container.lookup('view:' + name); + }, /** Returns the current model for a given route. diff --git a/packages/ember-routing/tests/system/route_test.js b/packages/ember-routing/tests/system/route_test.js index 823043dbc29..fc8beb0580b 100644 --- a/packages/ember-routing/tests/system/route_test.js +++ b/packages/ember-routing/tests/system/route_test.js @@ -36,5 +36,21 @@ test("default model utilizes the container to acquire the model factory", functi return Post; } +}); + +test("Route#viewFor", function(){ + ok(route.viewFor, 'function is present'); + + var lookup = { + 'view:application': {} + }; + + route.container = { + lookup: function(fullName) { + return lookup[fullName]; + } + }; + equal(route.viewFor('unknown'), undefined, 'returns undefined for unknown for lookup'); + equal(route.viewFor('application'), lookup['view:application'], 'return the correct view on valid lookup'); });