Note that there are some explanatory texts on larger screens.

plurals
  1. POAngularJS orderby / controller behavior: controller executed on orderby
    primarykey
    data
    text
    <p>I took a sample AngularJS app and began to change it to suit my needs. Now clicking to change the orderby causes the entire controller to be reloaded. Well that's where I'm initializing the default orderby. So what I get when I click a new orderby is a flash of the proper orderby then a quick return to the default. An alert showed me the controller is getting executed but I don't know why or how to fix it.</p> <p>Plunker <a href="http://plnkr.co/edit/7maY9PjNlUGCYeZx3UXm?p=preview" rel="nofollow">here</a></p> <p>index.html</p> <pre><code>&lt;!DOCTYPE html&gt; &lt;html data-ng-app="promptsApp"&gt; &lt;head&gt; &lt;link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet"&gt; &lt;link href="style.css" rel="stylesheet" /&gt; &lt;/head&gt; &lt;body&gt; &lt;div ng-view&gt;&lt;/div&gt; &lt;script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.6/angular.min.js"&gt;&lt;/script&gt; &lt;script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"&gt;&lt;/script&gt; &lt;script src="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"&gt;&lt;/script&gt; &lt;script src="app.js"&gt;&lt;/script&gt; &lt;script src="controllers.js"&gt;&lt;/script&gt; &lt;script src="promptsService.js"&gt;&lt;/script&gt; &lt;/body&gt; &lt;/html&gt; </code></pre> <p>app.js</p> <pre><code>var app = angular.module('promptsApp', []); app.config(function ($routeProvider) { $routeProvider .when('/prompts', { controller: 'PromptsController', templateUrl: 'partial.html' }) .otherwise({ redirectTo: '/prompts' }); }); </code></pre> <p>controllers.js</p> <pre><code>app.controller('PromptsController', function ($scope, promptsService) { init(); function init() { $scope.prompts = promptsService.getPrompts(); $scope.orderby='TRANSFEREE'; $scope.reverse = false; //alert('Hi'); } $scope.setOrder = function (orderby) { if (orderby === $scope.orderby) { $scope.reverse = !$scope.reverse; } $scope.orderby = orderby; }; }); </code></pre> <p>promptsService.js</p> <pre><code>app.service('promptsService', function () { this.getPrompts = function (user) { var prompts = [ { id: 1, NOTE: 'Call client about something', CALLBACK_DATE: '12-01-2013', TRANSFEREE: 'Tom Tuttle', REG_NUM: '123456' }, { id: 2, NOTE: 'Notify client of delay', CALLBACK_DATE: '12-10-2013', TRANSFEREE: 'Eddie Munster', REG_NUM: '101314' }, { id: 3, NOTE: 'Complete paperwork', CALLBACK_DATE: '12-12-2013', TRANSFEREE: 'Mary Tyler Moore', REG_NUM: '998877' } ]; return prompts; }; }); </code></pre> <p>partial.html</p> <pre><code>&lt;div class="prompts"&gt; &lt;div class="container"&gt; &lt;header&gt; &lt;h3&gt;Prompts&lt;/h3&gt; &lt;ul class="nav nav-pills"&gt; &lt;li ng-class="{'active': orderby=='CALLBACK_DATE'}"&gt;&lt;a href="#" ng-click="setOrder('CALLBACK_DATE')"&gt;Date&lt;/a&gt;&lt;/li&gt; &lt;li ng-class="{'active': orderby=='TRANSFEREE'}"&gt;&lt;a href="#" ng-click="setOrder('TRANSFEREE')"&gt;Transferee&lt;/a&gt;&lt;/li&gt; &lt;li&gt; (Currently: {{orderby}})&lt;/li&gt; &lt;/ul&gt; &lt;/header&gt; &lt;div&gt; &lt;div class="row cardContainer"&gt; &lt;div class="span3 card" data-ng-repeat="prompt in prompts | orderBy:orderby:reverse"&gt; &lt;div class="cardHeader"&gt;{{prompt.TRANSFEREE}}&lt;/div&gt; &lt;div class="cardBody"&gt;{{prompt.NOTE}} &lt;br&gt;# &lt;a href="#"&gt;{{prompt.REG_NUM}}&lt;/a&gt; {{prompt.CALLBACK_DATE}} &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;br /&gt; {{prompts.length}} prompts &lt;/div&gt; &lt;/div&gt; </code></pre> <p>See Plunker <a href="http://plnkr.co/edit/7maY9PjNlUGCYeZx3UXm?p=preview" rel="nofollow">here</a></p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload