TypeScript AngularJS 1控制器全局变量值在视图重新加载时从视图重置设置

时间:2017-01-26 17:54:13

标签: angularjs typescript

为了通过单击标题文本(作为锚点)对表格数据进行排序,我在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" });

1 个答案:

答案 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
            }
}