From bb0332ffac6fda8fd59ee88679235ea20a1c44e0 Mon Sep 17 00:00:00 2001 From: David Greenspan Date: Wed, 18 Sep 2013 19:22:13 -0700 Subject: [PATCH] refactor #each item mutable data pattern --- packages/ui/each.js | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/packages/ui/each.js b/packages/ui/each.js index 257fcedf41..63391c22e3 100644 --- a/packages/ui/each.js +++ b/packages/ui/each.js @@ -52,20 +52,20 @@ UI.Each = Component.extend({ var data = item; var dep = new Deps.Dependency; - // XXX dynamically rendering a child component - // shouldn't be this hard... + // function to become `comp.data` + var dataFunc = function () { + dep.depend(); + return data; + }; + // Storing `$set` on `comp.data` lets us + // access it from `changed`. + dataFunc.$set = function (v) { + data = v; + dep.changed(); + }; + var comp = UI.render( - content, - { data: _extend( - function () { - dep.depend(); - return data; - }, { - $set: function (v) { - data = v; - dep.changed(); - } - }) }, self); + content, { data: dataFunc }, self); if (beforeId) beforeId = LocalCollection._idStringify(beforeId);