Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种方法可以让我们创建一个全局函数,可以在angularjs中访问应用程序中的所有视图_Angularjs - Fatal编程技术网

有没有一种方法可以让我们创建一个全局函数,可以在angularjs中访问应用程序中的所有视图

有没有一种方法可以让我们创建一个全局函数,可以在angularjs中访问应用程序中的所有视图,angularjs,Angularjs,我正在用ionic framework开发phonegap应用程序,在这个应用程序中,我在所有视图中都有13个控制器和13个视图文件,我需要调用相同的函数formateDateWithExtraValue(user.date),要调用这个函数,我必须在所有13个控制器中声明这个函数,如下面所示 $scope.formateDateWithExtraValue=函数(Udate){ “我的代码在这里” 返回结果; } 有没有一种方法可以让我们全局地编写这个函数,这样就可以在所有视图中访问它。 就像

我正在用ionic framework开发phonegap应用程序,在这个应用程序中,我在所有视图中都有13个控制器和13个视图文件,我需要调用相同的函数formateDateWithExtraValue(user.date),要调用这个函数,我必须在所有13个控制器中声明这个函数,如下面所示

$scope.formateDateWithExtraValue=函数(Udate){ “我的代码在这里” 返回结果; }

有没有一种方法可以让我们全局地编写这个函数,这样就可以在所有视图中访问它。 就像在PropertyView.html中一样
{{formateDateWithExtraValue(user.date)}

在视图中实现这种格式的最合适的方法是使用过滤器。最终结果将允许在所有视图中使用格式化功能

我在这里提供了一个工作示例:

代码

angular
  .module("app", [])

.controller("Controller1", function() {
  this.originalValue = "  I  have too     many spaces  !!";
})

.controller("Controller2", function($filter) {
      this.originalValue= "I    also   have too    many  spaces!!"

  var removespaces = $filter("removespaces");
  this.extra = removespaces("Something   extra   you   can  do");
})

.filter("removespaces", function() {
      return function(value) {
        if (typeof value === "string") {
          return value
            .split(" ")
            .filter(function(f) {
              return f !== "";
            })
            .join(" ");
        } else {
          return value;
        }
      };
});
查看

<div ng-app="app">
  <p>
    Demonstrates using of filter across multiple controllers.
  </p>

  <div ng-controller="Controller1 as $ctrl">
    <h2>Controller1</h2>

    <p>
      Original Value:<pre>{{ $ctrl.originalValue }}</pre> 
    </p>

    <p>
      filtered: <pre>{{ $ctrl.modifiedInCtrl | removespaces }}</pre> 
    </p>

  </div>

<div ng-controller="Controller2 as $ctrl">
  <h2>Controller2</h2>

  <p>
      Original Value:<pre>{{ $ctrl.originalValue }}</pre> 
    </p>

    <p>
      filtered: <pre>{{ $ctrl.originalValue | removespaces }}</pre> 
    </p>

    <p>
      extra (using the filter in a controller): <pre>{{ $ctrl.extra }}</pre>
  </p>

</div>


</div>


演示如何跨多个控制器使用筛选器。

控制器1 原始值:{{$ctrl.originalValue}}

筛选:{{$ctrl.modifiedInCtrl | removespaces}}

控制器2 原始值:{{$ctrl.originalValue}}

已筛选:{$ctrl.originalValue | removespaces}

额外(在控制器中使用筛选器):{{$ctrl.extra}


此处的更多信息:

是的,对于我的情况,过滤器是最好的解决方案,但是$rootScope也可以工作,但是根据文档,过滤器是最终的解决方案,