Angular.js: Apakah $$tlb akan tetap/resmi?

Dibuat pada 29 Jan 2014  ·  3Komentar  ·  Sumber: angular/angular.js

Karena tidak ada dalam dokumen, saya sedikit waspada menggunakannya dalam arahan saya.

Namun saya perlu menggunakannya, karena saya ingin dapat melakukan banyak transklusi dalam beberapa kasus.

Jadi begitulah; dapatkah saya menggunakannya dengan aman tanpa takut melihat arahan saya rusak di masa depan?

Komentar yang paling membantu

Apakah akan ada semacam opsi untuk mengizinkan beberapa transklusi pada elemen yang sama di masa mendatang ?
Saya dapat melihat banyak area di mana ini akan berguna - ini sebenarnya cukup penting untuk beberapa arahan saya, di mana saya telah direduksi menjadi biola dengan DOM dan $ kompilasi dalam fungsi kompilasi (yang tidak terasa bersih tbh)

Semua 3 komentar

Tolong jangan mengandalkan API ini. $$ artinya bersifat pribadi dan kami dapat memecahkannya di rilis mendatang.

Apakah akan ada semacam opsi untuk mengizinkan beberapa transklusi pada elemen yang sama di masa mendatang ?
Saya dapat melihat banyak area di mana ini akan berguna - ini sebenarnya cukup penting untuk beberapa arahan saya, di mana saya telah direduksi menjadi biola dengan DOM dan $ kompilasi dalam fungsi kompilasi (yang tidak terasa bersih tbh)

Pasti akan sangat membantu untuk dapat menerapkan perilaku gaya ngIf dalam arahan khusus. Kami membuat arahan seperti itu sehingga kami tidak terus-menerus harus menyuntikkan layanan dan membuat properti pengontrol semata-mata untuk tujuan rendering elemen.

Saya pasti lebih suka tidak harus bergantung pada properti direktif internal untuk membuatnya bekerja sama dengan ngIf.

Sebagai contoh:

import {SubscriptionService, ISubscription} from '../subscriptions/subscriptions.service';

interface IPBIfFeatureDirectiveScope extends ng.IScope {
  isRenderElement: boolean;
}

interface IPBIfFeatureDirectiveAttributes extends ng.IAttributes {
  pbIfFeature: string;
  ngIf: string;
}

class IfFeatureDirective implements ng.IDirective {

  public transclude: any;
  public priority: number;
  public terminal: boolean;
  public restrict: string;
  public scope = true;
  public link: ng.IDirectiveLinkFn;
  public $$tlb: boolean;

  constructor(ngIfDirectiveArr: ng.IDirective[],
              subscriptionService: SubscriptionService,
              $parse: ng.IParseService) {

    let ngIfDirective: any = ngIfDirectiveArr[0];

    this.transclude = ngIfDirective.transclude;
    this.priority = ngIfDirective.priority - 1;
    this.terminal = ngIfDirective.terminal;
    this.restrict = ngIfDirective.restrict;
    this.$$tlb = true;
    this.link = function (scope: IPBIfFeatureDirectiveScope,
                          element: ng.IAugmentedJQuery,
                          attr: IPBIfFeatureDirectiveAttributes) {
      let expression: string = attr.pbIfFeature;
      let argArray: IArguments = arguments;
      let executeDirective = (): void => {
        subscriptionService.getSubscription().$promise
          .then((subscription: ISubscription) => {
            scope.isRenderElement = $parse(expression)(subscription.features);
            attr.ngIf = 'isRenderElement';
            ngIfDirective.link.apply(null, argArray);
          });
      };
      executeDirective();
    };
  }
}
export const ifFeatureDirectiveFactory = (ngIfDirective: ng.IDirective[],
                                          subscriptionService: SubscriptionService,
                                          $parse: ng.IParseService): ng.IDirective => new IfFeatureDirective(ngIfDirective, subscriptionService, $parse);
ifFeatureDirectiveFactory.$inject = ['ngIfDirective', 'subscriptionService', '$parse'];
Apakah halaman ini membantu?
0 / 5 - 0 peringkat