2013-05-06 4 views
0

У меня есть шаблон users, который представляет собой таблицу пользователей. Под этой таблицей есть ссылка для создания нового пользователя. Для лучшего UX я хотел бы отключить его, используя class="disabled" или скрыть эту ссылку во время создания нового пользователя. Каков наилучший способ сделать это?Спрятать ссылку во время users.new

index.html

<script type="text/x-handlebars" data-template-name="users"> 
    <div class='row'> 
    <div class='span7'> 
     <table class='table table-striped'> 
     <tbody> 
      {{#each model itemController="user"}} 
      <tr {{bindAttr class="isDirty:warning"}}> 
       <td>{{lastName}}</td> 
      </tr> 
      {{/each}} 
     </tbody> 
     </table> 
     <p> 
     {{#linkTo 'users.new' classNames="btn btn-small"}}Create a new user{{/linkTo}} 
     </p> 
    </div> 
    <div class='span5'> 
     {{outlet}} 
    </div> 
    </div> 
</script> 

<script type="text/x-handlebars" data-template-name="users/new"> 
    <p><strong>Last name</strong><br>{{view Ember.TextField valueBinding=lastName}}</p> 

    <p> 
    {{#if isDirty}} 
    <button {{action 'save' this}} class="btn btn-small">Save</button> 
    {{else}} 
    <button class="btn btn-small disabled">Save</button> 
    {{/if}} 
    </p> 
</script> 

app.js

App.UsersRoute = Ember.Route.extend({ 
    model: function() { 
    return App.User.find(); 
    } 
}); 

App.UsersNewRoute = Ember.Route.extend({ 
    model: function() { 
    return App.User.createRecord(); 
    }, 

    renderTemplate: function() { 
    this.render({ into: 'users' }); 
    } 
}); 

App.UsersNewController = Ember.ObjectController.extend({ 
    save: function(model) { 
    model.get('transaction').commit(); 
    App.Router.router.transitionTo('users.index') 
    } 
}); 

ответ

2

Я думаю, что один из возможных решений было бы добавить свойство в UsersController, что-то вроде 'isCreating', который вы можете установить значение true в крючке активации UsersNewRoute и сбросить значение false в деактивировать. Это было бы что-то вроде:

App.UsersNewRoute = Ember.Route.extend({ 

    activate: function() { 
    this.controllerFor('users').set('isCreating', true); 
    }, 

    deactivate: function() { 
    this.controllerFor('users').set('isCreating', false); 
    }, 

    model: function() { 
    return App.User.createRecord(); 
    }, 

    renderTemplate: function() { 
    this.render({ into: 'users' }); 
    } 
}); 

Очевидно, что вы будете использовать это свойство в шаблоне и связать класс, чтобы скрыть кнопку.

+0

Как я могу использовать проверку 'isNew' в шаблоне' users', когда модель определена в 'users.new'? – wintermeyer

+0

Спасибо! Я надеялся на версию «меньше кода», но она работает как charme. – wintermeyer

+0

Возможно, есть более сжатая версия, но я не помню ее ... –

Смежные вопросы