{"action":"created","comment":{"url":"https://api.github.com/repos/meteor/guide/pulls/comments/47390797","id":47390797,"diff_hunk":"@@ -0,0 +1,559 @@\n+---\n+title: Blaze\n+---\n+\n+After reading this guide, you'll know:\n+\n+1. How to use the Spacebars syntax, used to define templates rendered by the Blaze engine.\n+2. Best practice towards creating reusable components in Blaze.\n+3. How the Blaze rendering engine works under the hood and some techniques to best use it.\n+4. How to test Blaze templates.\n+\n+Blaze is Meteor's built in reactive rendering library. Using templates written in [Spacebars](https://github.com/meteor/meteor/blob/devel/packages/spacebars/README.md), a variant of [Handlebars](http://handlebarsjs.com) designed to take advantage of [Tracker](https://github.com/meteor/meteor/tree/devel/packages/tracker), Meteor's reactivity system, you can build components that are rendered by the Blaze library.\n+\n+Blaze is not required to built applications in Meteor---you can equally use [React](http://react-in-meteor.readthedocs.org/en/latest/) or [Angular](http://www.angular-meteor.com), however this guide will take you through best practice in building an application in Blaze.\n+\n+<a id=\"spacebars\">Spacebars</a>\n+\n+Spacebars is a handlebars-like templating language, built off the concept of rendering a reactivily changing *data context*. Spacebars templates look like simple HTML with special \"mustache\" tags delimited by `{{` and `}}`.\n+\n+As an example, consider the `todosItem` template from the Todos example app:\n+\n+```html\n+<template name=\"todosItem\">\n+  <div class=\"list-item {{checkedClass}} {{editingClass}}\">\n+    <label class=\"checkbox\">\n+      <input type=\"checkbox\" checked={{todo.checked}} name=\"checked\">\n+      <span class=\"checkbox-custom\"></span>\n+    </label>\n+\n+    <input type=\"text\" value=\"{{todo.text}}\" placeholder=\"Task name\">\n+    <a class=\"js-delete-item delete-item\" href=\"#\">\n+      <span class=\"icon-trash\"></span>\n+    </a>\n+  </div>\n+</template>\n+```\n+\n+In this example, this template is rendered with an object with key `todo` as data context (we'll see below how to enforce that). We access the properties of the `todo`  using the mustache tag, such as `{{todo.text}}`. The default behaviour is to render that property as a string; however in some cases (such as `checked=={{todo.checked}}` it can be resolved as a boolean value).\n+\n+Note that simple string interpolations like this will always escape any HTML for you---so you don't need to perform safety checks for XSS.\n+\n+Additionally we can see an example of a *template helper*---`{{checkedClass}}` calls out to the `checkedClass` helper defined in a separate JavaScript file, which combined with the template defines the `todosItem` component:\n+\n+```js\n+Template.todosItem.helpers({\n+  checkedClass() {\n+    return this.todo.checked && 'checked';\n+  }\n+});\n+```\n+\n+In the context of a Blaze helper, `this` is scoped to the current current *data context* at the point the helper was used. This can be hard to reason about, so it's often a good idea to instead pass the required data into the helper as an argument.\n+\n+Apart from simple interpolation, mustache tags can control flow of the template. For instance, in the `listsShow` template, we render a list of todos via:\n+\n+```html\n+  {{#each todo in todos}}\n+    {{> todosItem (todoArgs todo)}}\n+  {{else}}\n+    <div class=\"wrapper-message\">\n+      <div class=\"title-message\">No tasks here</div>\n+      <div class=\"subtitle-message\">Add new tasks using the field above</div>\n+    </div>\n+  {{/each}}\n+```\n+\n+This snippet illustrates a few things:\n+\n+ - The `{{#each in}}` block helper which renders a block one per element in an array or cursor, or an `{{else}}` block if no items exist.\n+ - Template inclusion `{{> todosItem (todoArgs todo)}}` which renders the `todosItem` component with a set data context, based on the output of the `todosArg` helper.\n+\n+You can read about the full Spacebars syntax [here](https://github.com/meteor/meteor/blob/devel/packages/spacebars/README.md), but in this section we'll attempt to cover some important finer details.\n+\n+<h3 id=\"data-contexts\">Data contexts and lookup</h3>\n+We've seen `{{todo.title}}` accesses the `title` property of the `todo` item on the current data context. Additionaly, `..` access the parent data context (rarely a good idea), `list.todos.[0]` accesses the first element of the `todos` array on `list`.\n+\n+Also, note that Spacebars is very forgiving of `null` values. It will not complain if you try to access a property on a `null` value (for instance `foo.bar` if `foo` is not defined), but instead simply treat it also as null. However there are exceptions to this---trying to call a `null` function, or doing the same *within* a helper will lead to exceptions.\n+\n+<h3 id=\"helpers\">Calling helpers with arguments</h3>\n+You can provide arguments to a helper like `checkedClass` by simply placing the argument after the helper call, as in: `{{checkedClass todo true 'checked'}}`. You can also provide a list of named keyword arguments to a helper with `{{checkedClass todo noClass=true classname='checked'}}. In this case, you might access those arguments with:\n+\n+```js\n+Template.todosItem.helpers({\n+  checkedClass(todo, kws) {\n+    const classname = kws.hash.classname || 'checked';\n+    if (todo.checked) {\n+      return classname;\n+    } else if (kws.hash.noClass) {\n+      return `no-${classname}`;\n+    }\n+  }\n+});\n+```\n+\n+You can also pass the output of a helper to a template inclusion or other helper. To do so, use brackets to show precedence:\n+\n+```html\n+{{> todosItem (todoArgs todo)}}\n+```\n+\n+Here the `todo` is passed as argument to the `todoArgs` helper, then the output is passed into the `todosItem` template.\n+\n+<h3 id=\"inclusion\">Template inclusion</h3>\n+You \"include\" a sub-component with the `{{>` syntax. By default, the sub-component will gain the data context of the caller, although it's usually a good idea to be explicit. You can provide a single object as argument (as we did with the object returned by the `todoArgs` helper above), or provide a list of keyword arguments, as the `listShowPage` template does:\n+\n+```html\n+{{> listsShow todosReady=Template.subscriptionsReady\n+  list=(getFullList listIdOnly) todos=listIdOnly.todos}}\n+```\n+\n+In this case, the `listShow` component can expect a data context of the form:\n+\n+```js\n+{\n+  todosReady: ...,\n+  list: ...,\n+  todos: ...\n+}\n+```\n+\n+<h3 id=\"helpers-in-tags\">Helpers in tags</h3>\n+We saw above that using a helper (or data context lookup) in the form `checked={{todo.checked}}` will add the checked property to the HTML tag if `todo.checked` evaluates to true. Also, you can directly include an object in the attribute list of an HTML element to set multiple attributes at once:\n+\n+```html\n+<a {{attributes}}>My Link</a>\n+```\n+\n+```js\n+Template.foo.helpers({\n+  attributes() {\n+    return {\n+      class: 'A class',\n+      style: {background: 'blue'}\n+    };\n+  }\n+});\n+```\n+\n+<h3 id=\"rendering-html\">Rendering pure HTML</h3>\n+Although by default a mustache tag won't render any HTML, for [XSS](https://en.wikipedia.org/wiki/Cross-site_scripting) security reasons, you can render pure HTML with the triple-mustache: `{{{`.\n+\n+```html\n+{{{myHtml}}}\n+```\n+\n+```js\n+Template.foo.helpers({\n+  myHtml() {\n+    return '<h1>This H1 will render</h1>';\n+  }\n+});\n+```\n+\n+You should be extremely careful about doing this, and always ensure you aren't returning user-generated content (or escape it if you do!) from such a helper.\n+\n+<h3 id=\"block-helpers\">Block Helpers</h3>\n+A block helper, called with `{{#` is a helper that takes (and may render) a block of Spacebars. For instance, we saw the `{{#each in}}` helper above which repeats a given block of Spacebars once per item in a list. You can also render a *component* as a block helper, rendering it's content via the `Template.contentBlock` and `Template.elseBlock`. For instance, you could create your own `{{#if}}` helper with:\n+\n+```html\n+<template name=\"myIf\">\n+  {{#if condition}}\n+    {{> Template.contentBlock}}\n+  {{else}}\n+    {{> Template.elseBlock}}\n+  {{/if}}\n+</template>\n+\n+<template name=\"caller\">\n+  {{#myIf condition=true}}\n+    <h1>I'll be rendered!</h1>\n+  {{/myIf}}\n+</template>\n+```\n+\n+<h3 id=\"builtin-block-helpers\">Builtin Block Helpers</h3>\n+There are a few builtin block helpers that are worth knowing about:\n+\n+<h4 id=\"if-unless\">If / Unless</h4>\n+\n+The `{{#if}}` and `{{#unless}}` helpers are fairly straightforward but invaluable for controlling the control flow of a template. Both operate by evaluating and checking their single argument for \"falsey\"-ness (in JS this means `null`, `undefined`, `0`, `''`, `[]` and of course `false`).\n+\n+```html\n+{{#if something}}\n+  <p>It's true</p>\n+{{else}}\n+  <p>It's false</p>\n+{{/if}}\n+```\n+\n+<h4 id=\"each-in\">Each-in</h4>\n+\n+The `{{#each in}}` helper is a convenient way to step over a list whilst retaining the outer data context. ","path":"content/blaze.md","position":null,"original_position":192,"commit_id":"01d39b6c2f1cd30c1d1cdca543f6348a90c02e3f","original_commit_id":"315ccaca1f3a767c75da9e70dc6d8a57393b49af","user":{"login":"stubailo","id":448783,"avatar_url":"https://avatars.githubusercontent.com/u/448783?v=3","gravatar_id":"","url":"https://api.github.com/users/stubailo","html_url":"https://github.com/stubailo","followers_url":"https://api.github.com/users/stubailo/followers","following_url":"https://api.github.com/users/stubailo/following{/other_user}","gists_url":"https://api.github.com/users/stubailo/gists{/gist_id}","starred_url":"https://api.github.com/users/stubailo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stubailo/subscriptions","organizations_url":"https://api.github.com/users/stubailo/orgs","repos_url":"https://api.github.com/users/stubailo/repos","events_url":"https://api.github.com/users/stubailo/events{/privacy}","received_events_url":"https://api.github.com/users/stubailo/received_events","type":"User","site_admin":false},"body":":+1:","created_at":"2015-12-11T19:01:31Z","updated_at":"2015-12-11T19:01:31Z","html_url":"https://github.com/meteor/guide/pull/139#discussion_r47390797","pull_request_url":"https://api.github.com/repos/meteor/guide/pulls/139","_links":{"self":{"href":"https://api.github.com/repos/meteor/guide/pulls/comments/47390797"},"html":{"href":"https://github.com/meteor/guide/pull/139#discussion_r47390797"},"pull_request":{"href":"https://api.github.com/repos/meteor/guide/pulls/139"}}},"pull_request":{"url":"https://api.github.com/repos/meteor/guide/pulls/139","id":52944325,"html_url":"https://github.com/meteor/guide/pull/139","diff_url":"https://github.com/meteor/guide/pull/139.diff","patch_url":"https://github.com/meteor/guide/pull/139.patch","issue_url":"https://api.github.com/repos/meteor/guide/issues/139","number":139,"state":"open","locked":false,"title":"Blaze content","user":{"login":"tmeasday","id":132554,"avatar_url":"https://avatars.githubusercontent.com/u/132554?v=3","gravatar_id":"","url":"https://api.github.com/users/tmeasday","html_url":"https://github.com/tmeasday","followers_url":"https://api.github.com/users/tmeasday/followers","following_url":"https://api.github.com/users/tmeasday/following{/other_user}","gists_url":"https://api.github.com/users/tmeasday/gists{/gist_id}","starred_url":"https://api.github.com/users/tmeasday/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tmeasday/subscriptions","organizations_url":"https://api.github.com/users/tmeasday/orgs","repos_url":"https://api.github.com/users/tmeasday/repos","events_url":"https://api.github.com/users/tmeasday/events{/privacy}","received_events_url":"https://api.github.com/users/tmeasday/received_events","type":"User","site_admin":false},"body":"This is done, barring testing, which I'll do post-testing article\r\n<a href='#crh-start'></a><a href='#crh-data-%7B%22processed%22%3A%20%5B%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46922770%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46922856%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46923841%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46923962%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46923988%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46924033%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46924063%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46924114%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46924129%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46924201%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46924228%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46924273%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46924305%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46924409%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46924466%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46924524%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46924580%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46924665%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46924901%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47039618%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47039661%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47040756%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47040867%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47040883%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47040909%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47040922%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47040937%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47040972%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47041931%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47041959%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47041971%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47041983%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47041987%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47042035%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47042088%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47042150%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47042193%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47042317%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47042330%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47042496%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47042585%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47042669%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47042740%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47042789%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47042804%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47042848%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47042940%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47042953%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47042992%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47043018%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47043127%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47043235%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47043248%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47043251%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47043269%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47043288%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47043320%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47043400%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47043445%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47044579%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47044656%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47044664%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47044978%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47045142%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47045188%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47045190%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47045231%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47045382%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47045424%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47045425%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47046610%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47051770%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47051780%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47052043%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47053104%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47056279%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47056363%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47056438%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47056531%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47056579%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47056605%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47320210%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47320251%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47320278%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47320326%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47320383%22%2C%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47321104%22%5D%2C%20%22comments%22%3A%20%7B%22Pull%20b9291f572b55c3a2226763991b8268d67efd7384%20content/blaze.md%20159%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46924063%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22%60eachBlock%60%20-%3E%20%60elseBlock%60%22%2C%20%22created_at%22%3A%20%222015-12-08T08%3A03%3A37Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%20%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A22%3A44Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/blaze.md%3AL1-544%22%7D%2C%20%22Pull%20b9291f572b55c3a2226763991b8268d67efd7384%20content/blaze.md%20243%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46924466%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22This%20sentence%20is%20janky%22%2C%20%22created_at%22%3A%20%222015-12-08T08%3A08%3A41Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22Hmm%2C%20what%20would%20you%20say%20instead%3F%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A41%3A55Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%3Ca%20href%3D%27%23crh-update-none%27%3E%3C/a%3E%22%2C%20%22created_at%22%3A%20%222015-12-09T02%3A38%3A48Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/blaze.md%3AL1-544%22%7D%2C%20%22Pull%20b9291f572b55c3a2226763991b8268d67efd7384%20content/blaze.md%20261%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46924580%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22%5C%22Although%20Blaze%20doesn%27t%20currently%20have%20a%20fully%20baked%20component%20model%5C%22%20is%20overly%20negative%20IMO.%20Plus%20I%20bet%20certain%20people%20would%20disagree%20with%20this%20statement.%22%2C%20%22created_at%22%3A%20%222015-12-08T08%3A10%3A07Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22Better%3F%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A49%3A20Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%3Ca%20href%3D%27%23crh-update-none%27%3E%3C/a%3E%22%2C%20%22created_at%22%3A%20%222015-12-09T02%3A33%3A31Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/blaze.md%3AL1-544%22%7D%2C%20%22Pull%20b9291f572b55c3a2226763991b8268d67efd7384%20content/blaze.md%20438%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47042669%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22I%27m%20not%20sure%20what%20this%20is%20recommending%20-%20should%20the%20functionality%20be%20factored%20out%20into%20a%20wrapper%20component%3F%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A48%3A43Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22Oh%2C%20I%20guess%20I%20was%20thinking%20of%20composition%2C%20if%20you%20can%20figure%20out%20a%20way%20to%20make%20it%20a%20child%20component.%20A%20wrapper%20component%20is%20sort%20of%20like%20complex%20composition%2C%20works%20too..%22%2C%20%22created_at%22%3A%20%222015-12-09T02%3A00%3A06Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22I%20should%20probably%20think%20of%20an%20example%20here%20and%20demo%20it.%20Any%20ideas%3F%22%2C%20%22created_at%22%3A%20%222015-12-09T02%3A01%3A14Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22I%20guess%20a%20common%20thing%20can%20be%20having%20some%20complex%20state%20or%20event%20handler%20logic.%20For%20example%2C%20you%20want%20to%20do%20auto-completing%20user%20search%2C%20and%20you%20want%20this%20to%20work%20inside%20a%20text%20area%20to%20tag%20users%2C%20or%20in%20a%20user%20selector%20somewhere.%22%2C%20%22created_at%22%3A%20%222015-12-09T02%3A32%3A29Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22Hrmm%2C%20need%20a%20better%20example%20for%20composition.%20Something%20not%20immediately%20obvious%20where%20you%20would%20pull%20out%20a%20sub-component%20if%20you%20wanted%20to%20share%20functionality.%5Cr%5Cn%5Cr%5CnI%20think%20this%20example%20doesn%27t%20really%20work%20as%20a%20subcomponent%20--%20what%20would%20the%20component%20render%3F%22%2C%20%22created_at%22%3A%20%222015-12-09T05%3A11%3A01Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22I%20feel%20like%20we%20just%20need%20to%20go%20look%20at%20examples%20where%20people%20want%20to%20use%20template-extension%20or%20blaze%20components%20and%20talk%20about%20how%20to%20do%20them%20with%20composition.%22%2C%20%22created_at%22%3A%20%222015-12-09T06%3A52%3A58Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22I%20added%20something.%20It%27s%20pretty%20crappy%20though.%22%2C%20%22created_at%22%3A%20%222015-12-11T04%3A34%3A04Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/blaze.md%3AL1-544%22%7D%2C%20%22Pull%20b9291f572b55c3a2226763991b8268d67efd7384%20content/blaze.md%2052%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46923841%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22Data%20context%20of%20the%20element%20where%20the%20helper%20was%20used%2C%20not%20the%20template.%22%2C%20%22created_at%22%3A%20%222015-12-08T08%3A00%3A19Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22Also%2C%20I%20feel%20like%20we%20should%20discourage%20using%20%60this%60%20inside%20helpers%20in%20favor%20of%20passing%20arguments%20or%20using%20%60Template.instance%28%29.data%60%22%2C%20%22created_at%22%3A%20%222015-12-08T08%3A05%3A41Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22What%20do%20you%20think%20now%3F%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A20%3A32Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22I%20don%27t%20think%20you%20pushed%20your%20change%20yet.%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A39%3A16Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22Yeah%20I%20write%20the%20comments%20as%20I%20go%20through%20the%20file%20and%20then%20push%20at%20the%20end%2C%20sorry.%20Pushed%20now.%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A52%3A54Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%3Ca%20href%3D%27%23crh-update-complete%27%3E%3C/a%3E%22%2C%20%22created_at%22%3A%20%222015-12-09T02%3A33%3A31Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/blaze.md%3AL1-544%22%7D%2C%20%22Pull%20315ccaca1f3a767c75da9e70dc6d8a57393b49af%20content/blaze.md%20140%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47056531%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22%5C%22won%27t%20render%20any%20HTML%5C%22%20-%3E%20%5C%22will%20escape%20HTML%20tags%20to%20avoid%20XSS%5C%22%5Cr%5Cn%5Cr%5Cn%5C%22you%20can%20render%20pure%20HTML%5C%22%20-%3E%20%5C%22you%20can%20render%20raw%20HTML%5C%22%22%2C%20%22created_at%22%3A%20%222015-12-09T06%3A58%3A04Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%22%2C%20%22created_at%22%3A%20%222015-12-11T04%3A09%3A35Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/blaze.md%3AL1-560%22%7D%2C%20%22Pull%201cc46ddc6efbc431ff7243bb3a73a28c36863b20%20content/blaze.md%20249%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47045382%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22We%20use%20an%20%60autorun%28%29%60%20to%20make%20sure%20that%20the%20data%20context%20is%20validated%20again%20whenever%20it%20changes.%22%2C%20%22created_at%22%3A%20%222015-12-09T02%3A37%3A53Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%22%2C%20%22created_at%22%3A%20%222015-12-09T03%3A05%3A30Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/blaze.md%3AL1-561%22%7D%2C%20%22Pull%20b9291f572b55c3a2226763991b8268d67efd7384%20content/blaze.md%207%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46922770%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22Hmm%2C%20technically%20they%20are%20Spacebars%20templates%2C%20Blaze%20is%20just%20the%20underlying%20rendering%20engine...%20what%20do%20you%20think%3F%20Too%20pedantic%3F%20People%20use%20the%20word%20%5C%22Blaze%5C%22%20to%20refer%20to%20the%20whole%20thing%20these%20days.%22%2C%20%22created_at%22%3A%20%222015-12-08T07%3A41%3A22Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A06%3A11Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/blaze.md%3AL1-544%22%7D%2C%20%22Pull%20b9291f572b55c3a2226763991b8268d67efd7384%20content/blaze.md%20239%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46924409%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22%60%60%60js%5Cr%5Cnnew%20SimpleSchema%28%7B%5Cr%5Cn%20%20list%3A%20%7Bblackbox%3A%20true%7D%2C%5Cr%5Cn%20%20todosReady%3A%20%7Btype%3A%20Boolean%7D%5Cr%5Cn%7D%29.validate%28Template.data%28%29%29%3B%5Cr%5Cn%60%60%60%5Cr%5Cn%5Cr%5CnThis%20works%20fine%2C%20we%20don%27t%20need%20to%20call%20%60check%60.%22%2C%20%22created_at%22%3A%20%222015-12-08T08%3A07%3A59Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22Yeah.%20We%20just%20need%20to%20make%20sure%20it%20actually%20works%20%28right%20now%20it%20throws%20due%20to%20the%20%60list%60%20failing%20the%20object%20test%29%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A40%3A20Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%22%2C%20%22created_at%22%3A%20%222015-12-09T05%3A36%3A57Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/blaze.md%3AL1-544%22%7D%2C%20%22Pull%20b9291f572b55c3a2226763991b8268d67efd7384%20content/blaze.md%20122%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46923962%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22%5C%22include%20an%20object%20as%20part%20of%20an%20HTML%20to%20apply%20multiple%20properties%20at%20once%3A%5C%22%20-%3E%20%5C%22Include%20an%20object%20in%20the%20attribute%20list%20of%20an%20HTML%20element%20to%20set%20multiple%20attributes%20at%20once.%5C%22%22%2C%20%22created_at%22%3A%20%222015-12-08T08%3A02%3A12Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%20%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A22%3A01Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/blaze.md%3AL1-544%22%7D%2C%20%22Pull%20b9291f572b55c3a2226763991b8268d67efd7384%20content/blaze.md%20214%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46924305%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22You%20also%20need%20to%20close%20tags%20that%20don%27t%20need%20to%20be%20closed%20in%20HTML5%2C%20like%20%60%3Cp%3E%60.%22%2C%20%22created_at%22%3A%20%222015-12-08T08%3A06%3A39Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%20%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A38%3A12Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/blaze.md%3AL1-544%22%7D%2C%20%22Pull%20315ccaca1f3a767c75da9e70dc6d8a57393b49af%20content/blaze.md%2080%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47056438%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22I%27d%20specifically%20call%20out%20%60kws.hash%60%20in%20the%20text.%20It%27s%20a%20bit%20odd%20and%20deserves%20clarification.%20I%27d%20even%20go%20so%20far%20as%20to%20suggest%20avoiding%20keyword%20arguments%20to%20helpers%20for%20clarity%3F%22%2C%20%22created_at%22%3A%20%222015-12-09T06%3A56%3A26Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22Changed..%22%2C%20%22created_at%22%3A%20%222015-12-11T04%3A10%3A39Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/blaze.md%3AL1-560%22%7D%2C%20%22Pull%20b9291f572b55c3a2226763991b8268d67efd7384%20content/blaze.md%20272%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46924665%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22%60doEdit%60%20is%20a%20super%20weird%20variable%20name.%20Not%20sure%20what%20it%20does.%20Maybe%20this%20is%20%60onFocusChange%60%20and%20%60focusStatus%60%20or%20%60onEditingStateChange%60%20and%20%60editingState%60%3F%20Or%20maybe%20even%20%60onFocus%60/%60onBlur%60.%22%2C%20%22created_at%22%3A%20%222015-12-08T08%3A11%3A11Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22How%20about%20just%20%60onEditingChange%60%20and%20%60editing%60%3F%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A50%3A10Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22Sounds%20good%21%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A58%3A37Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%22%2C%20%22created_at%22%3A%20%222015-12-09T02%3A22%3A49Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/blaze.md%3AL1-544%22%7D%2C%20%22Pull%20b9291f572b55c3a2226763991b8268d67efd7384%20content/blaze.md%20142%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46924033%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22mustance%20-%3E%20mustache%22%2C%20%22created_at%22%3A%20%222015-12-08T08%3A03%3A12Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%20%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A22%3A35Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/blaze.md%3AL1-544%22%7D%2C%20%22Pull%20b9291f572b55c3a2226763991b8268d67efd7384%20content/blaze.md%20217%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46924273%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22Whoa%2C%20I%20had%20no%20idea...%20this%20would%20really%20simplify%20some%20stuff%20in%20the%20docs%20app%20lol%22%2C%20%22created_at%22%3A%20%222015-12-08T08%3A06%3A16Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22This%20is%20like%20basically%20copied%20out%20of%20the%20spacebars%20docs.%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A38%3A23Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%20%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A38%3A26Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/blaze.md%3AL1-544%22%7D%2C%20%22Pull%20b9291f572b55c3a2226763991b8268d67efd7384%20content/blaze.md%20258%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46924524%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22sub-component%20-%3E%20sub-template%3F%20Not%20sure%20if%20we%20are%20using%20the%20word%20component%20to%20refer%20to%20Blaze%20entities%22%2C%20%22created_at%22%3A%20%222015-12-08T08%3A09%3A35Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22I%20think%20I%27m%20pretty%20inconsistent%20in%20this%20article.%20I%27ve%20used%20component%20more%20or%20less%20everywhere%20else%20in%20the%20guide.%20It%27s%20hard%20to%20know%20what%20to%20use%20in%20this%20article%2C%20sometimes%20it%20seems%20like%20it%20should%20be%20component%20%28like%20when%20talking%20about%20%5C%22reusability%5C%22%29%2C%20other%20times%20template%20%28when%20talking%20about%20technicalities%20with%20Blaze%29.%20%20%5Cr%5Cn%5Cr%5CnThis%20is%20sort%20of%20in-between.%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A43%3A13Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22Switched%20to%20try%20and%20use%20component%20everywhere%20it%20makes%20any%20kind%20of%20sense.%5Cr%5Cn%5Cr%5CnIt%27s%20a%20bit%20wonky%20but%20probably%20the%20best%20of%20bad%20options.%22%2C%20%22created_at%22%3A%20%222015-12-09T05%3A02%3A56Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%20%22%2C%20%22created_at%22%3A%20%222015-12-09T05%3A02%3A59Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/blaze.md%3AL1-544%22%7D%2C%20%22Pull%20b9291f572b55c3a2226763991b8268d67efd7384%20content/blaze.md%20211%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46924201%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22I%27d%20add%20a%20%5C%22historical%20note%5C%22.%5Cr%5Cn%5Cr%5CnAlso%2C%20is%20it%20confusing%20that%20you%20can%27t%20access%20%60name%60%20or%20%60color%60%20above%20from%20a%20helper%3F%22%2C%20%22created_at%22%3A%20%222015-12-08T08%3A05%3A05Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22Let%20me%20know%20what%20you%20think.%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A37%3A33Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%22%2C%20%22created_at%22%3A%20%222015-12-09T02%3A34%3A21Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/blaze.md%3AL1-544%22%7D%2C%20%22Pull%20b9291f572b55c3a2226763991b8268d67efd7384%20content/blaze.md%20420%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47042317%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22It%27s%20%60%7B%7BTemplate.subscriptionsReady%7D%7D%60%20inside%20Spacebars%2C%20and%20%60Template.instance%28%29.subscriptionsReady%28%29%60%20inside%20helpers.%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A42%3A55Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%20%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A54%3A08Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/blaze.md%3AL1-544%22%7D%2C%20%22Pull%20315ccaca1f3a767c75da9e70dc6d8a57393b49af%20content/blaze.md%20192%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47056579%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22Should%20we%20add%20an%20example%20of%20a%20two-dimensional%20iteration%3F%20That%27s%20the%20main%20strength%20of%20%60each%20in%60%20over%20old%20%60each%60.%22%2C%20%22created_at%22%3A%20%222015-12-09T06%3A59%3A04Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22Is%20this%20better%3F%22%2C%20%22created_at%22%3A%20%222015-12-11T04%3A08%3A49Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/blaze.md%3AL1-560%22%7D%2C%20%22Pull%20b9291f572b55c3a2226763991b8268d67efd7384%20content/blaze.md%20424%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47042496%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22I%20guess%20the%20logic%20is%2C%20we%20want%20to%20do%20all%20%5C%22smart%5C%22%20things%20inside%20%60onCreated%60%20rather%20than%20inside%20helpers%3F%20One%20more%20way%20to%20achieve%20that%20would%20be%20to%20define%20a%20function%20inside%20%60onCreated%60%20like%3A%5Cr%5Cn%5Cr%5Cn%60%60%60js%5Cr%5Cnthis.getListId%20%3D%20%28%29%20%3D%3E%20FlowRouter.getParam%28%27_id%27%29%5Cr%5Cn%5Cr%5Cnthis.autorun%28%28%29%20%3D%3E%20%7B%5Cr%5Cn%20%20this.subscribe%28%27list/todos%27%2C%20this.getListId%28%29%29%3B%5Cr%5Cn%7D%29%3B%5Cr%5Cn%60%60%60%5Cr%5Cn%5Cr%5CnAnd%20then%20use%20that%20function%20inside%20the%20helper.%20That%20way%20if%20you%20need%20to%20get%20the%20listId%20from%20somewhere%20else%2C%20you%20don%27t%20need%20to%20change%20the%20helper%3F%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A46%3A05Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22That%20seems%20like%20a%20very%20sensible%20approach%2C%20I%27ll%20make%20that%20change.%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A54%3A39Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22https%3A//github.com/meteor/todos/commit/eabfb2535a393476c870373b8eb105bf08d3d315%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A58%3A54Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%20%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A58%3A57Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/blaze.md%3AL1-544%22%7D%2C%20%22Pull%20b9291f572b55c3a2226763991b8268d67efd7384%20content/blaze.md%20427%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47042585%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22If%20we%20fetch%20data%20in%20helpers%20from%20the%20database%2C%20why%20not%20fetch%20router%20data%20in%20there%20too%3F%20Alternatively%2C%20we%20could%20suggest%20wrapping%20cursors%20in%20functions%20in%20%60onCreated%60%20but%20that%20could%20be%20a%20bit%20much.%20This%20is%20making%20me%20think%20that%20accessing%20the%20router%20from%20the%20helper%20is%20OK.%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A47%3A27Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22I%20think%20we%20agree%20on%20this.%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A59%3A17Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%20%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A59%3A30Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/blaze.md%3AL1-544%22%7D%2C%20%22Pull%20315ccaca1f3a767c75da9e70dc6d8a57393b49af%20content/blaze.md%20233%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47056605%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22It%20does%20work%2C%20right%3F%20So%20we%20can%20drop%20the%20XXX%22%2C%20%22created_at%22%3A%20%222015-12-09T06%3A59%3A31Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%22%2C%20%22created_at%22%3A%20%222015-12-11T04%3A07%3A30Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/blaze.md%3AL1-560%22%7D%2C%20%22Pull%20b9291f572b55c3a2226763991b8268d67efd7384%20content/blaze.md%20402%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47042150%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22Would%20also%20be%20good%20to%20mention%20the%20UX%20article%20about%20reusable/smart%20components%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A41%3A20Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%20%22%2C%20%22created_at%22%3A%20%222015-12-09T02%3A24%3A06Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/blaze.md%3AL1-544%22%7D%2C%20%22Pull%20b9291f572b55c3a2226763991b8268d67efd7384%20content/blaze.md%20467%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47042804%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22Somewhere%20near%20the%20top%20of%20this%20we%20should%20mention%20that%20the%20intention%20is%20that%20helpers%20should%20be%20cheap%20to%20re-run%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A50%3A26Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22Added%20something%2C%20lmk%22%2C%20%22created_at%22%3A%20%222015-12-09T02%3A02%3A08Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%20%22%2C%20%22created_at%22%3A%20%222015-12-09T02%3A29%3A23Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/blaze.md%3AL1-544%22%7D%2C%20%22Pull%20b9291f572b55c3a2226763991b8268d67efd7384%20content/blaze.md%2040%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46922856%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22%5C%22will%20never%20render%20HTML%5C%22%20-%3E%20%5C%22will%20escape%20HTML%20for%20you%5C%22%5Cr%5Cn%5Cr%5CnI%20think%20any%20reasonable%20person%20would%20say%20they%20do%20render%20HTML%22%2C%20%22created_at%22%3A%20%222015-12-08T07%3A43%3A09Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%20%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A06%3A47Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/blaze.md%3AL1-544%22%7D%2C%20%22Pull%20315ccaca1f3a767c75da9e70dc6d8a57393b49af%20content/blaze.md%2075%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r47056363%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22Technically%2C%20%60todo%60%20is%20not%20in%20the%20data%20context%20since%20it%27s%20a%20lexical%20variable%20introduced%20by%20%60each%20in%60.%20Not%20sure%20how%20technically%20correct%20we%20need%20to%20be.%22%2C%20%22created_at%22%3A%20%222015-12-09T06%3A54%3A41Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22In%20the%20place%20where%20I%20use%20%60%7B%7Btodo.title%7D%7D%60%20it%20%2Ais%2A%20the%20data%20context%20%28b/c%20it%27s%20the%20%60todosItem%60%20template%29.%5Cr%5Cn%5Cr%5CnSo%20strictly%20speaking%20it%20is%20correct.%22%2C%20%22created_at%22%3A%20%222015-12-11T04%3A12%3A54Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/blaze.md%3AL1-560%22%7D%2C%20%22Pull%20b9291f572b55c3a2226763991b8268d67efd7384%20content/blaze.md%20173%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46924114%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22End%20template%20tag%22%2C%20%22created_at%22%3A%20%222015-12-08T08%3A03%3A57Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%20%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A22%3A53Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/blaze.md%3AL1-544%22%7D%2C%20%22Pull%20b9291f572b55c3a2226763991b8268d67efd7384%20content/blaze.md%20179%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46924129%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22H4%27s%20don%27t%20need%20IDs%22%2C%20%22created_at%22%3A%20%222015-12-08T08%3A04%3A10Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22Can%20we%20not%20still%20link%20to%20them%20though%3F%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A23%3A22Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22Not%20currently%2C%20but%20we%20could%20add%20that%20feature.%20Should%20we%3F%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A37%3A57Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22I%20mean%2C%20can%20we%20literally%20not%20link%20to%20them%3F%20I%20think%20we%20can%3F%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A53%3A13Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22Yes%2C%20that%27s%20true%20-%20you%20could%20manually%20add%20the%20ID%20in%20the%20URL.%20I%20just%20mean%20that%20the%20little%20link%20button%20doesn%27t%20show%20up.%20I%27ll%20need%20to%20modify%20my%20H4s%20to%20have%20good%20IDs%20then.%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A56%3A49Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%20%22%2C%20%22created_at%22%3A%20%222015-12-09T02%3A24%3A18Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/blaze.md%3AL1-544%22%7D%2C%20%22Pull%20b9291f572b55c3a2226763991b8268d67efd7384%20content/blaze.md%20380%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46924901%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22Should%20this%20be%20%60Template.instance%28%29.data.onEdit%60%3F%20If%20you%20use%20any%20of%20the%20data%20context%20changing%20block%20helpers%20it%20won%27t%20work%20anymore.%22%2C%20%22created_at%22%3A%20%222015-12-08T08%3A14%3A15Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22Yeah%20but%20we%20say%20not%20to%20do%20that.%20I%27m%20not%20sure.%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A51%3A08Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%3Ca%20href%3D%27%23crh-update-complete%27%3E%3C/a%3E%22%2C%20%22created_at%22%3A%20%222015-12-09T02%3A38%3A49Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/blaze.md%3AL1-544%22%7D%2C%20%22Pull%20b9291f572b55c3a2226763991b8268d67efd7384%20content/blaze.md%20132%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/139%23discussion_r46923988%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22%60attributes%28%29%20%7B%20...%20%7D%60%2C%20not%20arrow%20function%20here%22%2C%20%22created_at%22%3A%20%222015-12-08T08%3A02%3A30Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%20%22%2C%20%22created_at%22%3A%20%222015-12-09T01%3A22%3A11Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/blaze.md%3AL1-544%22%7D%7D%7D'></a>\r\n<a href='https://www.codereviewhub.com/'><img src='http://www.codereviewhub.com/site/github-bar.png' height=40></a>\r\n- [ ] <a href='#crh-comment-Pull b9291f572b55c3a2226763991b8268d67efd7384 content/blaze.md 438'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/139#discussion_r47042669'>File: content/blaze.md:L1-544</a></b>\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> I'm not sure what this is recommending - should the functionality be factored out into a wrapper component?\r\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> Oh, I guess I was thinking of composition, if you can figure out a way to make it a child component. A wrapper component is sort of like complex composition, works too..\r\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> I should probably think of an example here and demo it. Any ideas?\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> I guess a common thing can be having some complex state or event handler logic. For example, you want to do auto-completing user search, and you want this to work inside a text area to tag users, or in a user selector somewhere.\r\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> Hrmm, need a better example for composition. Something not immediately obvious where you would pull out a sub-component if you wanted to share functionality.\r\nI think this example doesn't really work as a subcomponent -- what would the component render?\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> I feel like we just need to go look at examples where people want to use template-extension or blaze components and talk about how to do them with composition.\r\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> I added something. It's pretty crappy though.\r\n- [ ] <a href='#crh-comment-Pull 315ccaca1f3a767c75da9e70dc6d8a57393b49af content/blaze.md 75'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/139#discussion_r47056363'>File: content/blaze.md:L1-560</a></b>\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> Technically, `todo` is not in the data context since it's a lexical variable introduced by `each in`. Not sure how technically correct we need to be.\r\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> In the place where I use `{{todo.title}}` it *is* the data context (b/c it's the `todosItem` template).\r\nSo strictly speaking it is correct.\r\n- [ ] <a href='#crh-comment-Pull 315ccaca1f3a767c75da9e70dc6d8a57393b49af content/blaze.md 80'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/139#discussion_r47056438'>File: content/blaze.md:L1-560</a></b>\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> I'd specifically call out `kws.hash` in the text. It's a bit odd and deserves clarification. I'd even go so far as to suggest avoiding keyword arguments to helpers for clarity?\r\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> Changed..\r\n- [x] <a href='#crh-comment-Pull 315ccaca1f3a767c75da9e70dc6d8a57393b49af content/blaze.md 192'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/139#discussion_r47056579'>File: content/blaze.md:L1-560</a></b>\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> Should we add an example of a two-dimensional iteration? That's the main strength of `each in` over old `each`.\r\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> Is this better?\r\n- [x] <a href='#crh-comment-Pull b9291f572b55c3a2226763991b8268d67efd7384 content/blaze.md 7'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/139#discussion_r46922770'>File: content/blaze.md:L1-544</a></b>\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> Hmm, technically they are Spacebars templates, Blaze is just the underlying rendering engine... what do you think? Too pedantic? People use the word \"Blaze\" to refer to the whole thing these days.\r\n- [x] <a href='#crh-comment-Pull b9291f572b55c3a2226763991b8268d67efd7384 content/blaze.md 40'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/139#discussion_r46922856'>File: content/blaze.md:L1-544</a></b>\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> \"will never render HTML\" -> \"will escape HTML for you\"\r\nI think any reasonable person would say they do render HTML\r\n- [x] <a href='#crh-comment-Pull b9291f572b55c3a2226763991b8268d67efd7384 content/blaze.md 52'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/139#discussion_r46923841'>File: content/blaze.md:L1-544</a></b>\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> Data context of the element where the helper was used, not the template.\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> Also, I feel like we should discourage using `this` inside helpers in favor of passing arguments or using `Template.instance().data`\r\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> What do you think now?\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> I don't think you pushed your change yet.\r\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> Yeah I write the comments as I go through the file and then push at the end, sorry. Pushed now.\r\n- [x] <a href='#crh-comment-Pull b9291f572b55c3a2226763991b8268d67efd7384 content/blaze.md 122'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/139#discussion_r46923962'>File: content/blaze.md:L1-544</a></b>\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> \"include an object as part of an HTML to apply multiple properties at once:\" -> \"Include an object in the attribute list of an HTML element to set multiple attributes at once.\"\r\n- [x] <a href='#crh-comment-Pull b9291f572b55c3a2226763991b8268d67efd7384 content/blaze.md 132'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/139#discussion_r46923988'>File: content/blaze.md:L1-544</a></b>\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> `attributes() { ... }`, not arrow function here\r\n- [x] <a href='#crh-comment-Pull b9291f572b55c3a2226763991b8268d67efd7384 content/blaze.md 142'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/139#discussion_r46924033'>File: content/blaze.md:L1-544</a></b>\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> mustance -> mustache\r\n- [x] <a href='#crh-comment-Pull b9291f572b55c3a2226763991b8268d67efd7384 content/blaze.md 159'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/139#discussion_r46924063'>File: content/blaze.md:L1-544</a></b>\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> `eachBlock` -> `elseBlock`\r\n- [x] <a href='#crh-comment-Pull b9291f572b55c3a2226763991b8268d67efd7384 content/blaze.md 173'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/139#discussion_r46924114'>File: content/blaze.md:L1-544</a></b>\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> End template tag\r\n- [x] <a href='#crh-comment-Pull b9291f572b55c3a2226763991b8268d67efd7384 content/blaze.md 179'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/139#discussion_r46924129'>File: content/blaze.md:L1-544</a></b>\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> H4's don't need IDs\r\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> Can we not still link to them though?\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> Not currently, but we could add that feature. Should we?\r\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> I mean, can we literally not link to them? I think we can?\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> Yes, that's true - you could manually add the ID in the URL. I just mean that the little link button doesn't show up. I'll need to modify my H4s to have good IDs then.\r\n- [x] <a href='#crh-comment-Pull b9291f572b55c3a2226763991b8268d67efd7384 content/blaze.md 211'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/139#discussion_r46924201'>File: content/blaze.md:L1-544</a></b>\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> I'd add a \"historical note\".\r\nAlso, is it confusing that you can't access `name` or `color` above from a helper?\r\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> Let me know what you think.\r\n- [x] <a href='#crh-comment-Pull b9291f572b55c3a2226763991b8268d67efd7384 content/blaze.md 217'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/139#discussion_r46924273'>File: content/blaze.md:L1-544</a></b>\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> Whoa, I had no idea... this would really simplify some stuff in the docs app lol\r\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> This is like basically copied out of the spacebars docs.\r\n- [x] <a href='#crh-comment-Pull b9291f572b55c3a2226763991b8268d67efd7384 content/blaze.md 214'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/139#discussion_r46924305'>File: content/blaze.md:L1-544</a></b>\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> You also need to close tags that don't need to be closed in HTML5, like `<p>`.\r\n- [x] <a href='#crh-comment-Pull b9291f572b55c3a2226763991b8268d67efd7384 content/blaze.md 239'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/139#discussion_r46924409'>File: content/blaze.md:L1-544</a></b>\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> \r\n```js\r\nnew SimpleSchema({\r\nlist: {blackbox: true},\r\ntodosReady: {type: Boolean}\r\n}).validate(Template.data());\r\n```\r\nThis works fine, we don't need to call `check`.\r\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> Yeah. We just need to make sure it actually works (right now it throws due to the `list` failing the object test)\r\n- [x] <a href='#crh-comment-Pull b9291f572b55c3a2226763991b8268d67efd7384 content/blaze.md 243'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/139#discussion_r46924466'>File: content/blaze.md:L1-544</a></b>\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> This sentence is janky\r\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> Hmm, what would you say instead?\r\n- [x] <a href='#crh-comment-Pull b9291f572b55c3a2226763991b8268d67efd7384 content/blaze.md 258'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/139#discussion_r46924524'>File: content/blaze.md:L1-544</a></b>\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> sub-component -> sub-template? Not sure if we are using the word component to refer to Blaze entities\r\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> I think I'm pretty inconsistent in this article. I've used component more or less everywhere else in the guide. It's hard to know what to use in this article, sometimes it seems like it should be component (like when talking about \"reusability\"), other times template (when talking about technicalities with Blaze).\r\nThis is sort of in-between.\r\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> Switched to try and use component everywhere it makes any kind of sense.\r\nIt's a bit wonky but probably the best of bad options.\r\n- [x] <a href='#crh-comment-Pull b9291f572b55c3a2226763991b8268d67efd7384 content/blaze.md 261'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/139#discussion_r46924580'>File: content/blaze.md:L1-544</a></b>\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> \"Although Blaze doesn't currently have a fully baked component model\" is overly negative IMO. Plus I bet certain people would disagree with this statement.\r\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> Better?\r\n- [x] <a href='#crh-comment-Pull b9291f572b55c3a2226763991b8268d67efd7384 content/blaze.md 272'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/139#discussion_r46924665'>File: content/blaze.md:L1-544</a></b>\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> `doEdit` is a super weird variable name. Not sure what it does. Maybe this is `onFocusChange` and `focusStatus` or `onEditingStateChange` and `editingState`? Or maybe even `onFocus`/`onBlur`.\r\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> How about just `onEditingChange` and `editing`?\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> Sounds good!\r\n- [x] <a href='#crh-comment-Pull b9291f572b55c3a2226763991b8268d67efd7384 content/blaze.md 380'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/139#discussion_r46924901'>File: content/blaze.md:L1-544</a></b>\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> Should this be `Template.instance().data.onEdit`? If you use any of the data context changing block helpers it won't work anymore.\r\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> Yeah but we say not to do that. I'm not sure.\r\n- [x] <a href='#crh-comment-Pull b9291f572b55c3a2226763991b8268d67efd7384 content/blaze.md 402'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/139#discussion_r47042150'>File: content/blaze.md:L1-544</a></b>\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> Would also be good to mention the UX article about reusable/smart components\r\n- [x] <a href='#crh-comment-Pull b9291f572b55c3a2226763991b8268d67efd7384 content/blaze.md 420'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/139#discussion_r47042317'>File: content/blaze.md:L1-544</a></b>\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> It's `{{Template.subscriptionsReady}}` inside Spacebars, and `Template.instance().subscriptionsReady()` inside helpers.\r\n- [x] <a href='#crh-comment-Pull b9291f572b55c3a2226763991b8268d67efd7384 content/blaze.md 424'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/139#discussion_r47042496'>File: content/blaze.md:L1-544</a></b>\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> I guess the logic is, we want to do all \"smart\" things inside `onCreated` rather than inside helpers? One more way to achieve that would be to define a function inside `onCreated` like:\r\n```js\r\nthis.getListId = () => FlowRouter.getParam('_id')\r\nthis.autorun(() => {\r\nthis.subscribe('list/todos', this.getListId());\r\n});\r\n```\r\nAnd then use that function inside the helper. That way if you need to get the listId from somewhere else, you don't need to change the helper?\r\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> That seems like a very sensible approach, I'll make that change.\r\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> https://github.com/meteor/todos/commit/eabfb2535a393476c870373b8eb105bf08d3d315\r\n- [x] <a href='#crh-comment-Pull b9291f572b55c3a2226763991b8268d67efd7384 content/blaze.md 427'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/139#discussion_r47042585'>File: content/blaze.md:L1-544</a></b>\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> If we fetch data in helpers from the database, why not fetch router data in there too? Alternatively, we could suggest wrapping cursors in functions in `onCreated` but that could be a bit much. This is making me think that accessing the router from the helper is OK.\r\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> I think we agree on this.\r\n- [x] <a href='#crh-comment-Pull b9291f572b55c3a2226763991b8268d67efd7384 content/blaze.md 467'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/139#discussion_r47042804'>File: content/blaze.md:L1-544</a></b>\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> Somewhere near the top of this we should mention that the intention is that helpers should be cheap to re-run\r\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> Added something, lmk\r\n- [x] <a href='#crh-comment-Pull 1cc46ddc6efbc431ff7243bb3a73a28c36863b20 content/blaze.md 249'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/139#discussion_r47045382'>File: content/blaze.md:L1-561</a></b>\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> We use an `autorun()` to make sure that the data context is validated again whenever it changes.\r\n- [x] <a href='#crh-comment-Pull 315ccaca1f3a767c75da9e70dc6d8a57393b49af content/blaze.md 140'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/139#discussion_r47056531'>File: content/blaze.md:L1-560</a></b>\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> \"won't render any HTML\" -> \"will escape HTML tags to avoid XSS\"\r\n\"you can render pure HTML\" -> \"you can render raw HTML\"\r\n- [x] <a href='#crh-comment-Pull 315ccaca1f3a767c75da9e70dc6d8a57393b49af content/blaze.md 233'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/139#discussion_r47056605'>File: content/blaze.md:L1-560</a></b>\r\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> It does work, right? So we can drop the XXX\r\n\r\n\r\n<a href='https://www.codereviewhub.com/meteor/guide/pull/139?mark_as_completed=1'><img src='http://www.codereviewhub.com/site/github-mark-as-completed.png' height=26></a>&nbsp;<a href='https://www.codereviewhub.com/meteor/guide/pull/139?approve=1'><img src='http://www.codereviewhub.com/site/github-approve.png' height=26></a>&nbsp;<a href='https://github.com/meteor/guide/pull/139'><img src='http://www.codereviewhub.com/site/github-refresh.png' height=26></a>\r\n<a href='#crh-end'></a>","created_at":"2015-12-08T06:47:37Z","updated_at":"2015-12-11T19:01:31Z","closed_at":null,"merged_at":null,"merge_commit_sha":"0de3e915b046a5169f91d7a3a0e992dd1c33198c","assignee":{"login":"stubailo","id":448783,"avatar_url":"https://avatars.githubusercontent.com/u/448783?v=3","gravatar_id":"","url":"https://api.github.com/users/stubailo","html_url":"https://github.com/stubailo","followers_url":"https://api.github.com/users/stubailo/followers","following_url":"https://api.github.com/users/stubailo/following{/other_user}","gists_url":"https://api.github.com/users/stubailo/gists{/gist_id}","starred_url":"https://api.github.com/users/stubailo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stubailo/subscriptions","organizations_url":"https://api.github.com/users/stubailo/orgs","repos_url":"https://api.github.com/users/stubailo/repos","events_url":"https://api.github.com/users/stubailo/events{/privacy}","received_events_url":"https://api.github.com/users/stubailo/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/meteor/guide/pulls/139/commits","review_comments_url":"https://api.github.com/repos/meteor/guide/pulls/139/comments","review_comment_url":"https://api.github.com/repos/meteor/guide/pulls/comments{/number}","comments_url":"https://api.github.com/repos/meteor/guide/issues/139/comments","statuses_url":"https://api.github.com/repos/meteor/guide/statuses/01d39b6c2f1cd30c1d1cdca543f6348a90c02e3f","head":{"label":"meteor:blaze-content","ref":"blaze-content","sha":"01d39b6c2f1cd30c1d1cdca543f6348a90c02e3f","user":{"login":"meteor","id":789528,"avatar_url":"https://avatars.githubusercontent.com/u/789528?v=3","gravatar_id":"","url":"https://api.github.com/users/meteor","html_url":"https://github.com/meteor","followers_url":"https://api.github.com/users/meteor/followers","following_url":"https://api.github.com/users/meteor/following{/other_user}","gists_url":"https://api.github.com/users/meteor/gists{/gist_id}","starred_url":"https://api.github.com/users/meteor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/meteor/subscriptions","organizations_url":"https://api.github.com/users/meteor/orgs","repos_url":"https://api.github.com/users/meteor/repos","events_url":"https://api.github.com/users/meteor/events{/privacy}","received_events_url":"https://api.github.com/users/meteor/received_events","type":"Organization","site_admin":false},"repo":{"id":43717321,"name":"guide","full_name":"meteor/guide","owner":{"login":"meteor","id":789528,"avatar_url":"https://avatars.githubusercontent.com/u/789528?v=3","gravatar_id":"","url":"https://api.github.com/users/meteor","html_url":"https://github.com/meteor","followers_url":"https://api.github.com/users/meteor/followers","following_url":"https://api.github.com/users/meteor/following{/other_user}","gists_url":"https://api.github.com/users/meteor/gists{/gist_id}","starred_url":"https://api.github.com/users/meteor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/meteor/subscriptions","organizations_url":"https://api.github.com/users/meteor/orgs","repos_url":"https://api.github.com/users/meteor/repos","events_url":"https://api.github.com/users/meteor/events{/privacy}","received_events_url":"https://api.github.com/users/meteor/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/meteor/guide","description":"How do I use Meteor? (Work in progress)","fork":false,"url":"https://api.github.com/repos/meteor/guide","forks_url":"https://api.github.com/repos/meteor/guide/forks","keys_url":"https://api.github.com/repos/meteor/guide/keys{/key_id}","collaborators_url":"https://api.github.com/repos/meteor/guide/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/meteor/guide/teams","hooks_url":"https://api.github.com/repos/meteor/guide/hooks","issue_events_url":"https://api.github.com/repos/meteor/guide/issues/events{/number}","events_url":"https://api.github.com/repos/meteor/guide/events","assignees_url":"https://api.github.com/repos/meteor/guide/assignees{/user}","branches_url":"https://api.github.com/repos/meteor/guide/branches{/branch}","tags_url":"https://api.github.com/repos/meteor/guide/tags","blobs_url":"https://api.github.com/repos/meteor/guide/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/meteor/guide/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/meteor/guide/git/refs{/sha}","trees_url":"https://api.github.com/repos/meteor/guide/git/trees{/sha}","statuses_url":"https://api.github.com/repos/meteor/guide/statuses/{sha}","languages_url":"https://api.github.com/repos/meteor/guide/languages","stargazers_url":"https://api.github.com/repos/meteor/guide/stargazers","contributors_url":"https://api.github.com/repos/meteor/guide/contributors","subscribers_url":"https://api.github.com/repos/meteor/guide/subscribers","subscription_url":"https://api.github.com/repos/meteor/guide/subscription","commits_url":"https://api.github.com/repos/meteor/guide/commits{/sha}","git_commits_url":"https://api.github.com/repos/meteor/guide/git/commits{/sha}","comments_url":"https://api.github.com/repos/meteor/guide/comments{/number}","issue_comment_url":"https://api.github.com/repos/meteor/guide/issues/comments{/number}","contents_url":"https://api.github.com/repos/meteor/guide/contents/{+path}","compare_url":"https://api.github.com/repos/meteor/guide/compare/{base}...{head}","merges_url":"https://api.github.com/repos/meteor/guide/merges","archive_url":"https://api.github.com/repos/meteor/guide/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/meteor/guide/downloads","issues_url":"https://api.github.com/repos/meteor/guide/issues{/number}","pulls_url":"https://api.github.com/repos/meteor/guide/pulls{/number}","milestones_url":"https://api.github.com/repos/meteor/guide/milestones{/number}","notifications_url":"https://api.github.com/repos/meteor/guide/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/meteor/guide/labels{/name}","releases_url":"https://api.github.com/repos/meteor/guide/releases{/id}","created_at":"2015-10-05T22:26:02Z","updated_at":"2015-12-11T15:12:42Z","pushed_at":"2015-12-11T04:10:56Z","git_url":"git://github.com/meteor/guide.git","ssh_url":"git@github.com:meteor/guide.git","clone_url":"https://github.com/meteor/guide.git","svn_url":"https://github.com/meteor/guide","homepage":"http://guide.meteor.com/","size":3992,"stargazers_count":416,"watchers_count":416,"language":"CSS","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":31,"mirror_url":null,"open_issues_count":81,"forks":31,"open_issues":81,"watchers":416,"default_branch":"master"}},"base":{"label":"meteor:master","ref":"master","sha":"91ac24390f7dce92f940379cb32e02e79677085b","user":{"login":"meteor","id":789528,"avatar_url":"https://avatars.githubusercontent.com/u/789528?v=3","gravatar_id":"","url":"https://api.github.com/users/meteor","html_url":"https://github.com/meteor","followers_url":"https://api.github.com/users/meteor/followers","following_url":"https://api.github.com/users/meteor/following{/other_user}","gists_url":"https://api.github.com/users/meteor/gists{/gist_id}","starred_url":"https://api.github.com/users/meteor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/meteor/subscriptions","organizations_url":"https://api.github.com/users/meteor/orgs","repos_url":"https://api.github.com/users/meteor/repos","events_url":"https://api.github.com/users/meteor/events{/privacy}","received_events_url":"https://api.github.com/users/meteor/received_events","type":"Organization","site_admin":false},"repo":{"id":43717321,"name":"guide","full_name":"meteor/guide","owner":{"login":"meteor","id":789528,"avatar_url":"https://avatars.githubusercontent.com/u/789528?v=3","gravatar_id":"","url":"https://api.github.com/users/meteor","html_url":"https://github.com/meteor","followers_url":"https://api.github.com/users/meteor/followers","following_url":"https://api.github.com/users/meteor/following{/other_user}","gists_url":"https://api.github.com/users/meteor/gists{/gist_id}","starred_url":"https://api.github.com/users/meteor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/meteor/subscriptions","organizations_url":"https://api.github.com/users/meteor/orgs","repos_url":"https://api.github.com/users/meteor/repos","events_url":"https://api.github.com/users/meteor/events{/privacy}","received_events_url":"https://api.github.com/users/meteor/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/meteor/guide","description":"How do I use Meteor? (Work in progress)","fork":false,"url":"https://api.github.com/repos/meteor/guide","forks_url":"https://api.github.com/repos/meteor/guide/forks","keys_url":"https://api.github.com/repos/meteor/guide/keys{/key_id}","collaborators_url":"https://api.github.com/repos/meteor/guide/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/meteor/guide/teams","hooks_url":"https://api.github.com/repos/meteor/guide/hooks","issue_events_url":"https://api.github.com/repos/meteor/guide/issues/events{/number}","events_url":"https://api.github.com/repos/meteor/guide/events","assignees_url":"https://api.github.com/repos/meteor/guide/assignees{/user}","branches_url":"https://api.github.com/repos/meteor/guide/branches{/branch}","tags_url":"https://api.github.com/repos/meteor/guide/tags","blobs_url":"https://api.github.com/repos/meteor/guide/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/meteor/guide/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/meteor/guide/git/refs{/sha}","trees_url":"https://api.github.com/repos/meteor/guide/git/trees{/sha}","statuses_url":"https://api.github.com/repos/meteor/guide/statuses/{sha}","languages_url":"https://api.github.com/repos/meteor/guide/languages","stargazers_url":"https://api.github.com/repos/meteor/guide/stargazers","contributors_url":"https://api.github.com/repos/meteor/guide/contributors","subscribers_url":"https://api.github.com/repos/meteor/guide/subscribers","subscription_url":"https://api.github.com/repos/meteor/guide/subscription","commits_url":"https://api.github.com/repos/meteor/guide/commits{/sha}","git_commits_url":"https://api.github.com/repos/meteor/guide/git/commits{/sha}","comments_url":"https://api.github.com/repos/meteor/guide/comments{/number}","issue_comment_url":"https://api.github.com/repos/meteor/guide/issues/comments{/number}","contents_url":"https://api.github.com/repos/meteor/guide/contents/{+path}","compare_url":"https://api.github.com/repos/meteor/guide/compare/{base}...{head}","merges_url":"https://api.github.com/repos/meteor/guide/merges","archive_url":"https://api.github.com/repos/meteor/guide/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/meteor/guide/downloads","issues_url":"https://api.github.com/repos/meteor/guide/issues{/number}","pulls_url":"https://api.github.com/repos/meteor/guide/pulls{/number}","milestones_url":"https://api.github.com/repos/meteor/guide/milestones{/number}","notifications_url":"https://api.github.com/repos/meteor/guide/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/meteor/guide/labels{/name}","releases_url":"https://api.github.com/repos/meteor/guide/releases{/id}","created_at":"2015-10-05T22:26:02Z","updated_at":"2015-12-11T15:12:42Z","pushed_at":"2015-12-11T04:10:56Z","git_url":"git://github.com/meteor/guide.git","ssh_url":"git@github.com:meteor/guide.git","clone_url":"https://github.com/meteor/guide.git","svn_url":"https://github.com/meteor/guide","homepage":"http://guide.meteor.com/","size":3992,"stargazers_count":416,"watchers_count":416,"language":"CSS","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":31,"mirror_url":null,"open_issues_count":81,"forks":31,"open_issues":81,"watchers":416,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/meteor/guide/pulls/139"},"html":{"href":"https://github.com/meteor/guide/pull/139"},"issue":{"href":"https://api.github.com/repos/meteor/guide/issues/139"},"comments":{"href":"https://api.github.com/repos/meteor/guide/issues/139/comments"},"review_comments":{"href":"https://api.github.com/repos/meteor/guide/pulls/139/comments"},"review_comment":{"href":"https://api.github.com/repos/meteor/guide/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/meteor/guide/pulls/139/commits"},"statuses":{"href":"https://api.github.com/repos/meteor/guide/statuses/01d39b6c2f1cd30c1d1cdca543f6348a90c02e3f"}}}}