我正在使用离子框架开发phonegap应用程序,在这个应用程序中我有13个控制器和13个视图文件在所有视图中我需要调用相同的函数formateDateWithExtraValue(user.date),调用此函数我必须声明此函数in所有13个控制器如bellow
$ scope.formateDateWithExtraValue = function(Udate){ “我的代码在这里” 返回结果; }
有没有办法让我们可以全局编写这个函数,所以它可以在所有视图中访问。 就像在PropertyView.html中一样
{{formateDateWithExtraValue(user.date)}}
答案 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>