From 6a17c1809e2fe20712ea89a3de53004dbf7ebdb6 Mon Sep 17 00:00:00 2001 From: Robert Jackson Date: Fri, 3 Apr 2015 16:57:05 -0400 Subject: [PATCH] [BUGFIX release] Allow `{{render}}` helper to give template to view. --- .../lib/helpers/render.js | 4 ++++ .../tests/helpers/render_test.js | 17 +++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/packages/ember-routing-htmlbars/lib/helpers/render.js b/packages/ember-routing-htmlbars/lib/helpers/render.js index 111e6d4a7a3..05eb1497a9c 100644 --- a/packages/ember-routing-htmlbars/lib/helpers/render.js +++ b/packages/ember-routing-htmlbars/lib/helpers/render.js @@ -4,6 +4,7 @@ */ import Ember from "ember-metal/core"; // assert, deprecate +import { get } from "ember-metal/property_get"; import EmberError from "ember-metal/error"; import { camelize } from "ember-runtime/system/string"; import generateController from "ember-routing/system/generate_controller"; @@ -135,6 +136,9 @@ export function renderHelper(params, hash, options, env) { view = container.lookup('view:' + name); if (!view) { view = container.lookup('view:default'); + } + var viewHasTemplateSpecified = !!get(view, 'template'); + if (!viewHasTemplateSpecified) { template = template || container.lookup(templateName); } diff --git a/packages/ember-routing-htmlbars/tests/helpers/render_test.js b/packages/ember-routing-htmlbars/tests/helpers/render_test.js index 55059199150..d828ebafe18 100644 --- a/packages/ember-routing-htmlbars/tests/helpers/render_test.js +++ b/packages/ember-routing-htmlbars/tests/helpers/render_test.js @@ -555,3 +555,20 @@ QUnit.test("{{render}} helper should let view provide its own template", functio equal(view.$().text(), 'Hello other!'); }); + +QUnit.test("{{render}} helper should not require view to provide its own template", function() { + var template = "{{render 'fish'}}"; + var controller = EmberController.extend({ container: container }); + view = EmberView.create({ + controller: controller.create(), + template: compile(template) + }); + + container._registry.register('template:fish', compile('Hello fish!')); + + container._registry.register('view:fish', EmberView.extend()); + + runAppend(view); + + equal(view.$().text(), 'Hello fish!'); +});