{"action":"created","issue":{"url":"https://api.github.com/repos/dart-lang/observe/issues/38","labels_url":"https://api.github.com/repos/dart-lang/observe/issues/38/labels{/name}","comments_url":"https://api.github.com/repos/dart-lang/observe/issues/38/comments","events_url":"https://api.github.com/repos/dart-lang/observe/issues/38/events","html_url":"https://github.com/dart-lang/observe/issues/38","id":85652295,"number":38,"title":"When multiple properties change templates are evaluated in an unexpected order","user":{"login":"DartBot","id":8958862,"avatar_url":"https://avatars.githubusercontent.com/u/8958862?v=3","gravatar_id":"","url":"https://api.github.com/users/DartBot","html_url":"https://github.com/DartBot","followers_url":"https://api.github.com/users/DartBot/followers","following_url":"https://api.github.com/users/DartBot/following{/other_user}","gists_url":"https://api.github.com/users/DartBot/gists{/gist_id}","starred_url":"https://api.github.com/users/DartBot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DartBot/subscriptions","organizations_url":"https://api.github.com/users/DartBot/orgs","repos_url":"https://api.github.com/users/DartBot/repos","events_url":"https://api.github.com/users/DartBot/events{/privacy}","received_events_url":"https://api.github.com/users/DartBot/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/dart-lang/observe/labels/bug","name":"bug","color":"fc2929"},{"url":"https://api.github.com/repos/dart-lang/observe/labels/NotPlanned","name":"NotPlanned","color":"ededed"},{"url":"https://api.github.com/repos/dart-lang/observe/labels/PolymerMilestone-Next","name":"PolymerMilestone-Next","color":"ededed"},{"url":"https://api.github.com/repos/dart-lang/observe/labels/Priority-Medium","name":"Priority-Medium","color":"ededed"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":15,"created_at":"2015-06-05T23:00:38Z","updated_at":"2015-06-05T23:00:41Z","closed_at":null,"body":"<a href=\"https://github.com/johnmccutchan\"><img src=\"https://avatars.githubusercontent.com/u/224266?v=3\" align=\"left\" width=\"96\" height=\"96\"hspace=\"10\"></img></a> **Issue by [johnmccutchan](https://github.com/johnmccutchan)**\n_Originally opened as dart-lang/sdk#13386_\n\n----\n\nSee issue and discussion here: https://github.com/Polymer/polymer/issues/265\n\nJohn Messerly on web-ui list:\n\nyeah, this is interesting. I dunno if it's a problem in TemplateBinding (formerly MDV) or our port of it. Observers are supposed to run in their birth order, but that doesn't necessarily help when there's all kinds of async delays built into the system.\n\nin this case:\n\n1. &quot;json&quot; changed -&gt; enqueue the bindProperty observer and the &quot;json.keys&quot; observer\n2. run bindProperty observer, it enqueues change to &quot;isMap&quot;\n3. run the &quot;json.keys&quot; observer (it was already queued)\n4. run the &quot;isMap&quot; observer\n\nMaybe we're getting the order of #­3 and #­4 wrong... certainly, the &quot;isMap&quot; observer should have priority over the &quot;json.keys&quot; observer, because it was registered first.\nTentatively, I think this is a package:observe bug.\n"},"comment":{"url":"https://api.github.com/repos/dart-lang/observe/issues/comments/109472528","html_url":"https://github.com/dart-lang/observe/issues/38#issuecomment-109472528","issue_url":"https://api.github.com/repos/dart-lang/observe/issues/38","id":109472528,"user":{"login":"DartBot","id":8958862,"avatar_url":"https://avatars.githubusercontent.com/u/8958862?v=3","gravatar_id":"","url":"https://api.github.com/users/DartBot","html_url":"https://github.com/DartBot","followers_url":"https://api.github.com/users/DartBot/followers","following_url":"https://api.github.com/users/DartBot/following{/other_user}","gists_url":"https://api.github.com/users/DartBot/gists{/gist_id}","starred_url":"https://api.github.com/users/DartBot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DartBot/subscriptions","organizations_url":"https://api.github.com/users/DartBot/orgs","repos_url":"https://api.github.com/users/DartBot/repos","events_url":"https://api.github.com/users/DartBot/events{/privacy}","received_events_url":"https://api.github.com/users/DartBot/received_events","type":"User","site_admin":false},"created_at":"2015-06-05T23:00:39Z","updated_at":"2015-06-05T23:00:39Z","body":"<a href=\"https://github.com/jmesserly\"><img src=\"https://avatars.githubusercontent.com/u/1081711?v=3\" align=\"left\" width=\"48\" height=\"48\"hspace=\"10\"></img></a> **Comment by [jmesserly](https://github.com/jmesserly)**\n\n----\n\nchatting with Polymer.js team, the general feeling is one can't rely on &lt;template if> to be a guard. I would still like to see if we can do anything on the Dart side but I don't think we have a design to land in time for M8\n______\n*Removed this from the [M8](../milestones/M8) milestone.*\n*Added this to the [Later](../milestones/Later) milestone.*\n"}}