Advertisement
Guest User

Sharing data between controllers in Ember

a guest
Feb 26th, 2015
342
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //The Controllers:
  2.  
  3.     App.AlertsController = Ember.ArrayController.extend({
  4.         sortProperties: ['createdAt:desc'],
  5.         sortedModel: Ember.computed.sort("model", "sortProperties"),
  6.         remaining: function() {
  7.             console.log(this.filterBy('isCompleted', false).get('length'));
  8.             return this.filterBy('isCompleted', false).get('length');
  9.         }.property('@each.isCompleted')
  10.     });
  11.    
  12.     App.MenuController = Ember.ObjectController.extend({
  13.         needs: ['alerts'],
  14.         alertsBinding: 'controllers.alerts'
  15.     });
  16.  
  17. //The Route:
  18.  
  19.     App.AlertsRoute = Ember.Route.extend({
  20.       model: function() {
  21.         return this.store.find('alert');
  22.       }
  23.     });
  24.  
  25. //The model:
  26.  
  27.     App.Alert = DS.Model.extend({
  28.         label: DS.attr('string'),
  29.         text: DS.attr('string'),
  30.         createdAt: DS.attr('number'),
  31.         isCompleted: DS.attr('boolean')
  32.     });
  33.    
  34.     App.Alert.FIXTURES = [
  35.      {
  36.         id: 1,
  37.         label: 'Alert 1',
  38.         text: 'Lorem ipsum dolor sit amet',
  39.         createdAt: Date.now(),
  40.         isCompleted: false
  41.      },
  42.      {
  43.         id: 2,
  44.         label: 'Alert 2',
  45.         text: 'consectetur adipiscing elit',
  46.         createdAt: Date.now() +1,
  47.         isCompleted: false
  48.      },
  49.      {
  50.         id:3,
  51.         label: 'Alert 3',
  52.         text: 'sed do eiusmod tempor incididunt ut labore et dolore magna aliqua',
  53.         createdAt: Date.now()+2,
  54.         isCompleted: false
  55.      }
  56.     ];
  57.  
  58. //The templates:
  59.  
  60.         <script type="text/x-handlebars" data-template-name="home">
  61.           <img {{bind-attr src=appInfo.headerImage}} id="header_image" alt="Header Image" />
  62.            {{render "alerts" model}}
  63.           <ul id="home_nav">
  64.             {{render "menu" model}}
  65.           </ul>
  66.         </script>  
  67.  
  68.         <script type="text/x-handlebars" data-template-name="alerts">
  69.             <h4>Alerts: </h4>
  70.         Alerts ({{remaining}})<!-- this returns 3 -->
  71.             <ul class="alert_list">
  72.             {{#each alert in sortedModel}}
  73.                 <li>
  74.             {{#link-to 'alert' alert.id}}
  75.                 {{alert.label}}
  76.             {{/link-to}}
  77.         </li>
  78.             {{/each}}    
  79.             </ul>
  80.         </script>  
  81.  
  82.         <script type="text/x-handlebars" data-template-name="alert">
  83.             <h1>{{label}}</h1>
  84.             <p>{{text}}</p>
  85.         </script>
  86.  
  87.  
  88.         <script type="text/x-handlebars" data-template-name="menu">
  89.         <li>
  90.             {{#link-to 'alerts'}}
  91.                 Alerts ({{controller.alerts.remaining}})<!-- this returns 0 -->
  92.                 Alerts ({{alerts.remaining}})<!-- this returns 0 -->
  93.                 Alerts ({{remaining}})<!-- this returns nothing -->
  94.             {{/link-to}}
  95.         </li>      
  96.         </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement