为什么我的功能需要括号?

时间:2017-06-06 08:54:19

标签: angularjs components

在我的框架中,函数被调用而没有括号....(参见showErrors)

(function () {
  'use strict';

  angular
    .module('core')
    .directive('showErrors', showErrors);

  showErrors.$inject = ['$timeout', '$interpolate'];

  function showErrors($timeout, $interpolate) {
    var directive = {
      restrict: 'A',
      require: '^form',
      compile: compile
    };

    return directive;

我知道它是如何工作的...但是当我尝试这个时,我的组件不会起作用。它只适用于我将其更改为.component(' hotkeys',HotkeysComponent()); //将括号添加到HotkeysComponent

  angular
    .module('contacts.components')
    .component('hotkeys', HotkeysComponent);

  function HotkeysComponent() {
    var component = {
      templateUrl: '/my-app/contacts/client/views/ui/hotkeys.ui.html',
      controller: 'AddManagerController',
      controllerAs: 'vm'
    };

    return component;

澄清一下,除非我做HotkeysComponent()

,否则它不会起作用
angular
  .module('contacts.components')
  .component('hotkeys', HotkeysComponent()); // why don't the other functions need ()?

2 个答案:

答案 0 :(得分:1)

可以使用AngularJS模块的class SomeElementFieldSet extends Fieldset implements InputFilterProviderInterface { public function init() { $this->add(['name' => 'bar']); $this->add(['name' => 'baz']); } public function getInputFilterSpecification() { return [ [ 'name' => 'bar', 'required' => true, 'validators' => [ ['name' => 'NotEmpty'] ] ], [ 'name' => 'baz', 'required' => true, 'validators' => [ ['name' => 'NotEmpty'] ] ] ]; } } 方法注册组件(由.component()返回)。该方法有两个参数:

  • 组件的名称(作为字符串)。
  • 组件配置对象。 (请注意,与angular.module()不同 方法,此方法不带工厂功能。)

根据你的问题,第二个参数必须是一个对象,只有在你调用函数时才会发生(第二个参数)

Components in angular js 阅读本文以获取更多信息

答案 1 :(得分:0)

两者之间存在很大差异。 const hasItemWhithNullCode = items.some(x => x.code === null); 作为参数提供函数指针,而HotkeysComponent是值HotkeysComponent()返回。

一个例子:

HotkeysComponent

这里我们将alert作为函数传递(不是返回值)。现在我们可以在testFunction(variable) { variable(); } testFunction(alert);

中执行此功能
testFunction

这里我们将sum函数的结果传递给函数,我们可以在testFunction中使用它。