javascript - Ember 和 Handlebars 迭代集合数组

标签 javascript arrays ember.js handlebars.js

我正在学习 Ember,并尝试用它做一些小想法。目前,我正在尝试接收文本字段输入来过滤列表并返回匹配结果。我已经完成了所有这些工作,你知道,“困难”的事情。但是,不起作用的部分是 Handlebars 读取我返回的数组的“标题”属性。只是空白。

这是我的模板:

<script data-template-name="application" type="text/x-handlebars">
  {{input type="text" value=searchString placeholder="Search..."}}
  {{filterMovies}}
  <ul>
    {{#each searchResults}}
    <li>{{title}}</li>
    {{/each}}
  </ul>
</script>

现在是我的 Controller :

    App.ApplicationController = Ember.Controller.extend({
    filterMovies: function() {
      var self = this,
        searchString = self.get('searchString'),
        searchResults = [],
        filterArrLength = null,
        theFullMovieList,
        theFilteredMovieList = [];

      if (!searchString) {
        return;
      }

      var url = 'http://www.json-generator.com/api/json/get/clVKyWQSnC';
      Ember.$.getJSON(url).then(function(data) {
        theFullMovieList = data;

        theFullMovieList.filter(function(movie) {
          if (movie.title.toLowerCase().startsWith(searchString)) {
            theFilteredMovieList.push(movie);
          }
        });
        console.log(theFilteredMovieList);
        self.set('searchResults', theFilteredMovieList);
      });
    }.property('searchString')
  });

我尝试使用 {{this}}{{this.title}}{{searchResults.title}} 进行打印,和 {{title}} 没有运气。但是,记录数组会显示正确的值。

有什么想法吗? View On CodePen

最佳答案

您的每个语法无效。您必须使用新语法:

<ul>
  {{#each searchResults as |movie|}}
    <li>{{movie.title}}</li>
  {{/each}}
</ul>

See working demo on CodePen.

关于javascript - Ember 和 Handlebars 迭代集合数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34113819/

相关文章:

Javascript 文件上传只需两步

javascript - jQuery - 减少滚动函数中的代码的技术

javascript - 获取数组中对象的属性

javascript - 无法从js对象中删除键值对

javascript - Ember 数据自定义数组推送和删除

javascript - 为什么这个解码/编码过程给出不同的缓冲区数组?

java - 在java中构建读取和打印部分填充数组的方法

android - 如何使用 ember.js 框架通过终端创建 cordova 混合 Android、ios 应用程序?

javascript - 计算属性中 `property.[]` 和 `property` 之间有什么区别

JavaScript:异步函数是否创建新线程?