ember.js,是否可以从控制器访问模板?

时间:2013-12-15 04:45:59

标签: jquery ember.js

我是emberjs的新手,但我真的想了解更多。我正在用ember构建一个webapp。

所以,问题如下。我有一个页面(用户),它应该显示在models / users.js中定义的所有对象用户。当我从我的其他api加载用户对象时,我想在用户块(div id = users-id)上显示'处理...'(我使用jquery blockui)。我不知道我是否可以在userRoute上做到这一点。或者我应该把它放在别的地方?

    ==my users.hbs
<div id="users-id" class="jumbotron">
    <ul class="users-listing">
        {{#each user in model}}
        <li>{{user.name}} - {{user.email}}</li>
        {{/each}}
    </ul>
</div>

    ==usersRoute.js
        App.UsersRoute = Ember.Route.extend({
        setupController: function(controller){
      $('#users-id').block({ 
         message: 'processing...'});
      $.getJSON('.../users').then(function(data){
         Ember.run(function() {
            controller.set('model', data.body);
         });              
      });
      $('#users-id').unblock();
   }  
    });

    ==usersController.js
    App.UsersController = Ember.ArrayController.extend({
       sortProperties: ['name'],
       sortAscending: true // false = descending
    });

    ==user.js (model)
    App.User = DS.Model.extend({
        name         : DS.attr(),
        email        : DS.attr()
    });

    ==store
    App.ApplicationAdapter = DS.FixtureAdapter;
    App.store = DS.Store.extend()

    ==router
    App.Router.map(function(){
        this.resource('users', function(){
            this.resource('user', { path:'/:user_id' }, function(){
                this.route('edit');
            });
            this.route('create');
        });
    });

我不知道是否可以这样做.. 谢谢。

1 个答案:

答案 0 :(得分:0)

您可能会对2种解决方案中的1种感兴趣。

  1. 新的加载路线:https://gist.github.com/machty/6944577http://discuss.emberjs.com/t/proposal-nested-loading-routes/2895
  2. 一个全局加载div元素,它位于您的ember应用程序之外,您可以在模型/ setupController阶段进行操作
  3. 您当前方法的问题是在解决model / setupController之后才会注入该路由的模板