有没有办法让我们可以创建一个全局功能,可以在angularjs中访问app中的所有视图

时间:2016-07-01 11:01:35

标签: angularjs

我正在使用离子框架开发phonegap应用程序,在这个应用程序中我有13个控制器和13个视图文件在所有视图中我需要调用相同的函数formateDateWithExtraValue(user.date),调用此函数我必须声明此函数in所有13个控制器如bellow

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

有没有办法让我们可以全局编写这个函数,所以它可以在所有视图中访问。 就像在PropertyView.html中一样    

{{formateDateWithExtraValue(user.date)}}

1 个答案:

答案 0 :(得分:1)

在视图中完成此类格式化的最合适的角度方法是使用过滤器。最终结果将允许在所有视图中使用格式化功能。

我在这里提供了一个工作示例:http://codepen.io/krcourville/pen/BzRxvr?editors=1010

<强>代码

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>

此处提供更多信息:https://docs.angularjs.org/guide/filter