У меня есть определенное пользователем свойство в классе, который не срабатывает при доступе к свойству через повтор на странице ASPX? - PullRequest
0 голосов
/ 25 июня 2018

Прежде всего позвольте мне начать с того, что я новичок в angular и TS, но работал с высокопоставленными членами нашей команды, которые думают, что этот код подходит (простой метод получения в javascript) .... Спасибо заранее за вашу помощь!!Если потребуется дополнительная информация, дайте мне знать.

Итак, вот мое определение записи в TS ......

export class LabDefExp {
    expID: number;
    labID: number;
    expTitle: string;
    expNum: string;
    numberOfExceptions: number;

    get displayFullExpTitle(): string {
        return '(' + this.expNum + ') ' + this.expTitle;
    }

    tags: secureNetReports.Tag[];
    constructor(labDefExp?: secureNetReports.LabDefExp) {
        if (labDefExp) {
            for (var fieldName in labDefExp) {
                this[fieldName] = labDefExp[fieldName];
            }
        }
    }
}

export class Tag {
    tagNum: string;
    traditionalIt: boolean;
    networkType: string;
    exceptionReason: string;
    modelType: string;
    deviceStatus: string;
    assetTypeId: string;

    get traditionalDisplay(): string { return this.traditionalIt ? 'Yes' : 'No'; }

    constructor(tag?: secureNetReports.Tag) {
        if (tag) {
            for (var fieldName in tag) {
                this[fieldName] = tag[fieldName];
            }
        }
    }
}

А вот фрагмент разметки ...

   <accordion-group ng-repeat="exception in labDefRptSumm.exceptions" class="row" ng-show="exception.expTitle" ng-hide="!exception.expTitle">
          <accordion-heading>
        <div class="row">
            <div class="cell">
             <span ng-bind="exception.displayFullExpTitle"></span>
             ( <span class="badge" ng-class="vm.getBadgeClass(exception.numberOfExceptions)" ng-bind="exception.numberOfExceptions"></span> Devices)
           </div>
         </div>
              </accordion-heading>
         <div ng-repeat="tag in exception.tags" class="row" >                                    
           <table cats-table ng-hide="exception.tags == null" id="tags" ng-cloak>
                <thead>
                  <tr ng-show="exception.tags.length > 0">
                    <th>SecureNET Tag</th>
                    <th>Device Type</th>
                    <th>Status Name</th>
                    <th>Traditional Device?</th>
                    <th>Exception Reason</th>
                    <th>Network Type</th>
                     <th class="icons">
                    </th>
                  </tr>
                  <tr style="text-align: center" ng-show="exception.tags.length == 0">
                    <td>
                      <h4>No devices match your search criteria.</h4>
                    </td>
                  </tr>
                </thead>
                <tr ng-repeat="tag in exception.tags | filter:searchID">
                  <td ng-bind="tag.tagNum"></td>
                  <td ng-bind="tag.modelType"></td>
                  <td ng-init="sn=tag.deviceStatus">
                    <span class="badge"
                      ng-class="{ 'active': sn.indexOf('Active') == 0,
                                  'inactive': sn.indexOf('Inactive')==0,
                                  'parts-only': sn.indexOf('Parts Only')==0,
                                  'surplus': sn.indexOf('Surplus')==0,
                                  'return-visit': sn.indexOf('Return Visit')==0}"
                      ng-bind="tag.deviceStatus"></span>
                  </td>
                  <td ng-bind="tag.traditionalDisplay"></td>
                  <td ng-bind="tag.exceptionReason"></td>
                  <td ng-bind="tag.networkType"></td>
                 <td class="icons" nowrap>
                    <a class="btn btn-sm btn-primary" href="Import.aspx#/import/single/{{tag.assetTypeId}}/{{tag.tagNum}}">View</a>
                  </td>
                </tr>

Итак, когда вызов свойств displayFullExpTitle и TraditionalDisplay никогда не запускается, если я прохожу инструменты dev (f12 на chrome) и устанавливаю точки останова?Чего мне не хватает, чтобы это не сработало ??

Будем благодарны за любые предложения или комментарии.

Спасибо

1 Ответ

0 голосов
/ 25 июня 2018

Используйте угловой фильтр вместо функции геттера. Я не верю, что ng1 вызовет геттеры для обновления значений ng-bind.

например, я просто написал это в обычном JavaScript

angular.module('something')
        .filter('displayFullExpTitle', [function(){
              return function(expDetail){
                        return '(' + expDetail.expNum + ') ' + expDetail.expTitle;
                    }
                }]);

тогда в ng-bind вы можете сделать

  <span ng-bind="exception | displayFullExpTitle"></span>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...