ember.js – 无法使用setupController中的数据集渲染模板

发布时间:2019-04-24 发布网站:脚本之家
脚本之家收集整理的这篇文章主要介绍了ember.js – 无法使用setupController中的数据集渲染模板脚本之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Emberjs v1.0.0-pre.4

把手1.0.0.rc.2

我正在ember中建立一个facebook好友列表管理器.当我导航到list / 1 / members时,MembersRoute填充MembersController的数据没有出现.

MembersRoute将呈现朋友模板,该模板通常显示我们所有的朋友,但在此方案中仅显示所选列表的成员.

应用程序的路由器

App.Router.map(function () {
    this.route('instructions');
    this.route('friends');
    this.route('members',{path: '/list/:list_id/members'});
});

路线

App.MembersRoute = Ember.Route.extend({
    model: function () {
        var list = this.controllerFor('application').get('selectedList'),friends = list && list.get('members') || [];
        return friends;
    },setupController: function (controller,model) {
        var list = this.controllerFor('application').get('selectedList');
        controller.set('title',list.get('title'));
        controller.set('list',list);
        controller.set('content',model);
    },renderTemplate: function () {
        this.render('friends');
    }
});

朋友模板

<script type='text/x-handlebars' data-template-name='friends'>
  <h2>{{title}}</h2>
  <ul id='friends'>
    {{#each friend in controller}}
      <a href='#' {{action 'select' friend}}>
        <li {{bindAttr class='friend.isSelected:selected'}}>
            <img {{bindAttr src='friend.imageUrl'}}/>
            <p>{{friend.name}}</p>
        </li>
      </a>
    {{else}}
      <h3>There are no friends in this list.</h3>
    {{/each}}
  </ul>
</script>

应用模板

<script type='text/x-handlebars' data-template-name='application'>
      <div class='row'>
          <div class='span4'>
              {{render 'lists'}}
          </div>
          <div class='span8>
              {{outlet}}
          </div>
      </div>
</script>

最后,数据存储和模型

App.Store = DS.Store.extend({
  revision: 11,adapter: 'DS.FixtureAdapter'
});

App.List = DS.Model.extend({
    members: DS.hasMany('App.Friend'),name: DS.attr('string'),isSelected: DS.attr('boolean'),num_of_members: function () {
        var num = this.get('members').toArray().length,str = num + ' Member';
        return num === 1 ? str : str + 's';
    }.property('members'),title: function () {
        return 'Friends in ' + this.get('name');
    }.property('name'),toggleSelected: function () {
        this.set('isSelected',!this.get('isSelected'));
        return this;
    }
});

App.Friend = DS.Model.extend({
    lists: DS.hasMany('App.List'),imageUrl: DS.attr('string'),!this.get('isSelected'));
        return this;
    }
});

解决方法

你应该只使用_super来实现默认实现.
setupController: function(controller,model) {
  this._super(controller,model)
  controller.set('something','some value');
}

总结

以上是脚本之家为你收集整理的ember.js – 无法使用setupController中的数据集渲染模板全部内容,希望文章能够帮你解决ember.js – 无法使用setupController中的数据集渲染模板所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:76874919,请注明来意。
标签: