ember js,我如何在路由器的控制器中使用该数组

时间:2014-08-22 03:30:46

标签: javascript ember.js

您好我是ember的新手,我想使用从服务器端获取的数组中的某些数据。但我不知道该怎么做。以下代码在路线中。

searchList: null,

model: function() {

  // This is so that we don't refresh it all the time
  // arguably, this is a hack.
  var searchList = this.get('searchList');

  if(searchList !== null) {
    return searchList;
  }

  var self = this;
  return Ember.$.ajax({
    url: 'http://coen268.peterbergstrom.com/timezones.php',
    dataType: 'jsonp'
  }).then(function(response) {
    var cities = [];  <-----------------------this is an array of names from server side
    if (response && response.length) {
      for(var i=0; i<response.length; i++) {
        cities.push(Ember.Object.create(response[i]));
      }
    }
    /*
    cities.sort(function(a, b) {
        return a.id - b.id
    })
    */
    self.set('searchList', cities);
    return cities;

我只想在我的控制器中使用cities var,以便我可以执行排序,添加和重组输出到最终视图html。

非常感谢!

1 个答案:

答案 0 :(得分:0)

如果您的路线被调用,比如App.CitiesRoute,那么您需要像这样声明您的CitiesController:

App.CitiesController = Ember.ArrayController.extend({});

然后,您可以将sorting与简单的Controller属性一起使用,或者在filter()(指向您的ArrayController)上调用this时使用filtering,如Ember&#39所示; s指南,

您还可以访问ArrayController的所有功能和属性,如Ember API documentation所示。

您甚至可以通过在ArrayController中指定itemController属性来为数组的每个项指定特定的Controller,例如:

App.CitiesController = Ember.ArrayController.extend({
  itemController: 'city'
});

// Here you can specify an ObjectController linked to all your items in the cities array

App.CityController = Ember.ObjectController.extend({

  cityNameLowercase: function() {
    return this.get('cityName').toLowerCase();
  }.property('cityName')
});

将绑定到阵列的每个城市。