javascript - Ember 入门

标签 javascript ember.js

我正在玩 Ember 做入门教程:http://emberjs.com/guides/getting-started/displaying-model-data/但是我卡住了,我不知道自己做错了什么。一切都很好,直到我开始显示模型数据,您只需添加:

Todos.TodosRoute = Ember.Route.extend({
  model: function () {
    return Todos.Todo.find();
  }
});

返回所有现有的待办事项并将静态 html 替换为 Handlebars 以使其动态化:

<ul id="todo-list">
  {{#each controller}}
    <li>
      <input type="checkbox" class="toggle">
      <label>{{title}}</label><button class="destroy"></button>
    </li>
  {{/each}}
</ul>

结果是这样的: enter image description here

正如我所说,在此之前它运行良好。代码 right here .

最佳答案

我对您的应用做了一些改动。在您有两个名为 AppTodoEmber.Application 实例在同一范围内运行之前。默认情况下,Ember 应用程序使用 body 元素作为 rootElement(您的应用程序将在其中呈现),因此您的应用程序会发生冲突。

如果您真的需要在同一页面上运行两个应用程序,请使用 Application#rootElement通知选择器您希望应用程序呈现的元素。我会说,当您有多个应用程序共享同一个文档(如果这是您想要的)时,您应该避免将 body 用作 rootElement

根据你的图片,我认为你不需要两个应用程序,我假设你只想要待办事项应用程序,所以我删除了App,只留下Todo (参见固定的 jsbin )。

我注意到您所有的 HTML 都是静态的,您根本没有使用 Handlebars,还有一些不正确的 js 引用已被修复。

而不是执行以下操作:

  <section id="main">
    <ul id="todo-list">
      <li class="completed">
        <input type="checkbox" class="toggle">
        <label>Learn Ember.js</label><button class="destroy"></button>
      </li>
      <li>
        <input type="checkbox" class="toggle">
        <label>...</label><button class="destroy"></button>
      </li>
      <li>
        <input type="checkbox" class="toggle">
        <label>Profit!</label><button class="destroy"></button>
      </li>
    </ul>
  <!-- more stuff-->

使用 Handlebars,因为它提供了 {{each}}帮助程序,它允许您像这样遍历您的集合:

    <ul id="todo-list">
    {{#each filteredTodos itemController="todo"}}
      <li {{bindAttr class="isCompleted:completed isEditing:editing"}}>
        {{#if isEditing}}
          {{view Todos.EditTodoView todoBinding="this"}}
        {{else}}
          {{view Ember.Checkbox checkedBinding="isCompleted" class="toggle"}}
            <label {{action "editTodo" on="doubleClick"}}>{{title}}</label>
            <button {{action "removeTodo"}} class="destroy"></button>
        {{/if}}
      </li>
    {{/each}}
    </ul>

这将为您的 Controller 中的每个模型创建一个li元素(在本例中,来自计算的filteredTodos)。

我强烈建议您深入了解 guides了解有关 ember 的更多信息。

关于javascript - Ember 入门,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16966804/

相关文章:

javascript - 将未知数量的参数传递给 JavaScript 函数

javascript - 调用 laravel {{action(Controller@method}} 并从 vue.js 数组传递变量

javascript - Chrome 扩展程序 - "webNavigation.onComitted"事件被触发两次

javascript - 停留在简单的 Ember.js 示例上,我认为我的 javascript 文件没有被使用

javascript - 有人可以提供一张图表,说明 ember 数据如何与浏览器的持久层相关吗?

javascript - React 18 TypeScript child FC

javascript - ASP.NET MVC : Create Crawlable link tags from rendered pager

javascript - Ember.Object 中的多个属性或单个观察者

ruby-on-rails - 使用 Ember 从服务器获取 JSON 数据

javascript - Ember CLI/Ember.js 中的 Promise