{"action":"created","issue":{"url":"https://api.github.com/repos/Shopify/twine/issues/20","labels_url":"https://api.github.com/repos/Shopify/twine/issues/20/labels{/name}","comments_url":"https://api.github.com/repos/Shopify/twine/issues/20/comments","events_url":"https://api.github.com/repos/Shopify/twine/issues/20/events","html_url":"https://github.com/Shopify/twine/pull/20","id":53910350,"number":20,"title":"Bindings finished","user":{"login":"pickle27","id":1965489,"avatar_url":"https://avatars.githubusercontent.com/u/1965489?v=3","gravatar_id":"","url":"https://api.github.com/users/pickle27","html_url":"https://github.com/pickle27","followers_url":"https://api.github.com/users/pickle27/followers","following_url":"https://api.github.com/users/pickle27/following{/other_user}","gists_url":"https://api.github.com/users/pickle27/gists{/gist_id}","starred_url":"https://api.github.com/users/pickle27/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pickle27/subscriptions","organizations_url":"https://api.github.com/users/pickle27/orgs","repos_url":"https://api.github.com/users/pickle27/repos","events_url":"https://api.github.com/users/pickle27/events{/privacy}","received_events_url":"https://api.github.com/users/pickle27/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":18,"created_at":"2015-01-09T20:20:08Z","updated_at":"2015-01-13T21:10:40Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/Shopify/twine/pulls/20","html_url":"https://github.com/Shopify/twine/pull/20","diff_url":"https://github.com/Shopify/twine/pull/20.diff","patch_url":"https://github.com/Shopify/twine/pull/20.patch"},"body":"@BlakeMesdag pointed me to a problem with how I had fixed the initial dirty state for Forms in Shopify and we realized that at the root of the issue was that we didn't have anything to hook onto when the binding for a node was completed (aka the node and its children are bound).\r\n\r\nIn this PR @BlakeMesdag and I add this functionality `bindingFinished`. What we do is when binding we check if the context has a `bindingFinished` attribute, if it does we pop it off and store it temporarily (this way child nodes don't re-call this). When all the children are bound and we return to the top level where we popped off the function we call it and then re-attach it to the node (this is for re-bindings so it can be re-bound the same way).\r\n\r\nWe should probably also add a note about this to the readme.\r\n\r\nfor review\r\n@qq99 @pushrax \r\ncc @BlakeMesdag "},"comment":{"url":"https://api.github.com/repos/Shopify/twine/issues/comments/69820657","html_url":"https://github.com/Shopify/twine/pull/20#issuecomment-69820657","issue_url":"https://api.github.com/repos/Shopify/twine/issues/20","id":69820657,"user":{"login":"qq99","id":150352,"avatar_url":"https://avatars.githubusercontent.com/u/150352?v=3","gravatar_id":"","url":"https://api.github.com/users/qq99","html_url":"https://github.com/qq99","followers_url":"https://api.github.com/users/qq99/followers","following_url":"https://api.github.com/users/qq99/following{/other_user}","gists_url":"https://api.github.com/users/qq99/gists{/gist_id}","starred_url":"https://api.github.com/users/qq99/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/qq99/subscriptions","organizations_url":"https://api.github.com/users/qq99/orgs","repos_url":"https://api.github.com/users/qq99/repos","events_url":"https://api.github.com/users/qq99/events{/privacy}","received_events_url":"https://api.github.com/users/qq99/received_events","type":"User","site_admin":false},"created_at":"2015-01-13T21:10:40Z","updated_at":"2015-01-13T21:10:40Z","body":"what's the markup look like with current implementation?  `define=\"{form: new Shopify.Form(), bindingsComplete: ...}\"` ?"}}