當前位置: 首頁>>代碼示例>>TypeScript>>正文


TypeScript reference.isConst函數代碼示例

本文整理匯總了TypeScript中@glimmer/reference.isConst函數的典型用法代碼示例。如果您正苦於以下問題:TypeScript isConst函數的具體用法?TypeScript isConst怎麽用?TypeScript isConst使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。


在下文中一共展示了isConst函數的7個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。

示例1: behavior


//.........這裏部分代碼省略.........
  export default helper(disableBubbling);
  ```

  If you need the default handler to trigger you should either register your
  own event handler, or use event methods on your view class. See
  ["Responding to Browser Events"](/api/ember/release/classes/Component)
  in the documentation for `Component` for more information.

  ### Specifying DOM event type

  `{{action}}` helpers called in element space can specify an event type.
  By default the `{{action}}` helper registers for DOM `click` events. You can
  supply an `on` option to the helper to specify a different DOM event name:

  ```handlebars
  <div {{action "anActionName" on="doubleClick"}}>
    click me
  </div>
  ```

  See ["Event Names"](/api/ember/release/classes/Component) for a list of
  acceptable DOM event names.

  ### Specifying whitelisted modifier keys

  `{{action}}` helpers called in element space can specify modifier keys.
  By default the `{{action}}` helper will ignore click events with pressed modifier
  keys. You can supply an `allowedKeys` option to specify which keys should not be ignored.

  ```handlebars
  <div {{action "anActionName" allowedKeys="alt"}}>
    click me
  </div>
  ```

  This way the action will fire when clicking with the alt key pressed down.
  Alternatively, supply "any" to the `allowedKeys` option to accept any combination of modifier keys.

  ```handlebars
  <div {{action "anActionName" allowedKeys="any"}}>
    click me with any key pressed
  </div>
  ```

  ### Specifying a Target

  A `target` option can be provided to the helper to change
  which object will receive the method call. This option must be a path
  to an object, accessible in the current context:

  ```app/templates/application.hbs
  <div {{action "anActionName" target=someService}}>
    click me
  </div>
  ```

  ```app/controllers/application.js
  import Controller from '@ember/controller';
  import { inject as service } from '@ember/service';

  export default Controller.extend({
    someService: service()
  });
  ```

  @method action
  @for Ember.Templates.helpers
  @public
*/
export default function(_vm: VM, args: Arguments): UnboundReference<Function> {
  let { named, positional } = args;

  let capturedArgs = positional.capture();

  // The first two argument slots are reserved.
  // pos[0] is the context (or `this`)
  // pos[1] is the action name or function
  // Anything else is an action argument.
  let [context, action, ...restArgs] = capturedArgs.references;

  // TODO: Is there a better way of doing this?
  let debugKey: string | undefined = (action as any)._propertyKey;

  let target = named.has('target') ? named.get('target') : context;
  let processArgs = makeArgsProcessor(named.has('value') && named.get('value'), restArgs);

  let fn;

  if (typeof action[INVOKE] === 'function') {
    fn = makeClosureAction(action, action, action[INVOKE], processArgs, debugKey);
  } else if (isConst(target) && isConst(action)) {
    fn = makeClosureAction(context.value(), target.value(), action.value(), processArgs, debugKey);
  } else {
    fn = makeDynamicClosureAction(context.value(), target, action, processArgs, debugKey);
  }

  fn[ACTION] = true;

  return new UnboundReference(fn);
}
開發者ID:habdelra,項目名稱:ember.js,代碼行數:101,代碼來源:action.ts

示例2: renderHelper

  renderHelper = function renderHelper(
    vm: VM,
    args: Arguments
  ): VersionedPathReference<CurriedComponentDefinition | null> {
    let env = vm.env as Environment;
    let nameRef = args.positional.at(0);

    assert(
      `The first argument of {{render}} must be quoted, e.g. {{render "sidebar"}}.`,
      isConst(nameRef)
    );
    // tslint:disable-next-line:max-line-length
    assert(
      `The second argument of {{render}} must be a path, e.g. {{render "post" post}}.`,
      args.positional.length === 1 || !isConst(args.positional.at(1))
    );

    let templateName = nameRef.value() as string;

    // tslint:disable-next-line:max-line-length
    assert(
      `You used \`{{render '${templateName}'}}\`, but '${templateName}' can not be found as a template.`,
      env.owner.hasRegistration(`template:${templateName}`)
    );

    let template = env.owner.lookup<OwnedTemplate>(`template:${templateName}`);

    let controllerName: string;

    if (args.named.has('controller')) {
      let controllerNameRef = args.named.get('controller');

      // tslint:disable-next-line:max-line-length
      assert(
        `The controller argument for {{render}} must be quoted, e.g. {{render "sidebar" controller="foo"}}.`,
        isConst(controllerNameRef)
      );

      // TODO should be ensuring this to string here
      controllerName = controllerNameRef.value() as string;

      // tslint:disable-next-line:max-line-length
      assert(
        `The controller name you supplied '${controllerName}' did not resolve to a controller.`,
        env.owner.hasRegistration(`controller:${controllerName}`)
      );
    } else {
      controllerName = templateName;
    }

    if (args.positional.length === 1) {
      let def = new RenderDefinition(controllerName, template, SINGLETON_RENDER_MANAGER);
      return UnboundReference.create(curry(def));
    } else {
      let def = new RenderDefinition(controllerName, template, NON_SINGLETON_RENDER_MANAGER);
      let captured = args.capture();
      return UnboundReference.create(curry(def, captured));
    }
  };
開發者ID:Artmann,項目名稱:ember.js,代碼行數:59,代碼來源:render.ts

示例3: create

 static create(parentReference: VersionedPathReference<Opaque>, propertyKey: string) {
   if (isConst(parentReference)) {
     return new RootPropertyReference(parentReference.value(), propertyKey);
   } else {
     return new NestedPropertyReference(parentReference, propertyKey);
   }
 }
開發者ID:cibernox,項目名稱:ember.js,代碼行數:7,代碼來源:references.ts

示例4: create

  static create(Helper: SimpleHelper, _vm: VM, args: CapturedArguments) {
    let helper = Helper.create();

    if (isConst(args)) {
      let { positional, named } = args;

      let positionalValue = positional.value();
      let namedValue = named.value();

      if (DEBUG) {
        maybeFreeze(positionalValue);
        maybeFreeze(namedValue);
      }

      let result = helper.compute(positionalValue, namedValue);

      if (typeof result === 'object' && result !== null || typeof result === 'function') {
        return new RootReference(result);
      } else {
        return PrimitiveReference.create(result);
      }
    } else {
      return new SimpleHelperReference(helper.compute, args);
    }
  }
開發者ID:jasonmit,項目名稱:ember.js,代碼行數:25,代碼來源:references.ts

示例5: create

 static create(sourceReference: VersionedPathReference<Opaque>, pathReference: PathReference<string>) {
   if (isConst(pathReference)) {
     let path = pathReference.value();
     return referenceFromPath(sourceReference, path);
   } else {
     return new GetHelperReference(sourceReference, pathReference);
   }
 }
開發者ID:GowthamMK,項目名稱:ember.js,代碼行數:8,代碼來源:get.ts

示例6: create

 static create(_condRef: any, truthyRef: PrimitiveReference<boolean>, falsyRef: PrimitiveReference<boolean>) {
   let condRef = ConditionalReference.create(_condRef);
   if (isConst(condRef)) {
     return condRef.value() ? truthyRef : falsyRef;
   } else {
     return new ConditionalHelperReference(condRef, truthyRef, falsyRef);
   }
 }
開發者ID:jasonmit,項目名稱:ember.js,代碼行數:8,代碼來源:if-unless.ts

示例7: create

 static create(sourceReference: any, pathReference: PathReference<any>) {
   if (isConst(pathReference)) {
     let parts = pathReference.value().split('.');
     return referenceFromParts(sourceReference, parts);
   } else {
     return new GetHelperReference(sourceReference, pathReference);
   }
 }
開發者ID:fpauser,項目名稱:ember.js,代碼行數:8,代碼來源:get.ts


注:本文中的@glimmer/reference.isConst函數示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。