为了通过单击标题文本(作为锚点)对表格数据进行排序,我在AngularJS1 TypeScript控制器中有一个全局变量,其初始值在控制器中设置为全局变量“假”'对于ASC排序顺序。单击表格标题后,varibale的值将翻转为“真实”'并且' false'或者将排序顺序更改为DESC / ASC。
如果调用程序的aysnc具有回调功能,如果再次调用再次获取数据,则排序顺序不会保留在视图中设置的内容,而是排序顺序默认为' false'它被设置为控制器中的全局变量。我试图在控制器的异步函数中手动更改值(它在finally块中返回一个“承诺”来获取数据),当变量值设置时,它也没有工作价值'虚假'在全球范围内设定。因此,无论我点击表格标题多少次,都不会翻转/更改排序顺序。
AngularJS Typescript控制器代码如下:
private sortReverse: boolean = false; // global set the default sort order
constructor(productService: inventory.Interfaces.IProductService) {
this.productService = productService;
this.getProductsByPage(this.pageNo);
}
HTML /查看代码段如下:
<table id="products" ng-cloak>
<thead>
<tr>
<th style="display: none;">ID</th>
<th>
<a href="#" ng-click="prdCtrl.sortType = 'Name'; prdCtrl.sortReverse = !prdCtrl.sortReverse; prdCtrl.getProductsByPage(prdCtrl.pageNo)">
Name
</a>
</th>
Controller只通过路由实例化一次(而不是在视图中): -
static configureRoutes($routeProvider: ng.route.IRouteProvider) {
$routeProvider.when("/home/", { controller: "inventory.controllers.productController", templateUrl: "/app/views/products.html", controllerAs: "prdCtrl" });
$routeProvider.otherwise({ redirectTo: "/home" });
答案 0 :(得分:0)
尝试在构造函数中分配相同的布尔值
export class ControllerName {
private sortReverse: boolean = false; // global set the default sort order
constructor(productService: inventory.Interfaces.IProductService) {
this.productService = productService;
this.getProductsByPage(this.pageNo);
this.sortReverse = false; //initialise same value on this
}
}