Template extends view with @viewProperties and calls initialize with attributes passed to build.

This commit is contained in:
Nathan Sobo
2011-12-27 18:36:54 -06:00
parent 08c1d33836
commit 7948543a5b
2 changed files with 13 additions and 0 deletions

View File

@@ -17,6 +17,11 @@ fdescribe "Template", ->
@li outlet: 'li1', class: 'foo', "one"
@li outlet: 'li2', class: 'bar', "two"
viewProperties:
initialize: (attrs) ->
@initializeCalledWith = attrs
foo: "bar"
view = Foo.build(title: "Zebra")
afterEach ->
@@ -29,6 +34,11 @@ fdescribe "Template", ->
expect(view.find("ol > li.foo:contains(one)")).toExist()
expect(view.find("ol > li.bar:contains(two)")).toExist()
it "extends the view with viewProperties, calling the 'constructor' property if present", ->
expect(view.constructor).toBeDefined()
expect(view.foo).toBe("bar")
expect(view.initializeCalledWith).toEqual(title: "Zebra")
it "wires references for elements with 'outlet' attributes", ->
expect(view.li1).toMatchSelector("li.foo:contains(one)")
expect(view.li2).toMatchSelector("li.bar:contains(two)")

View File

@@ -18,6 +18,9 @@ class Template
@content(attributes)
view = @builder.toFragment()
@wireOutlets(view)
if @viewProperties
$.extend(view, @viewProperties)
view.initialize?(attributes)
view
wireOutlets: (view) ->