如何在AngularJS中使用一个可以在多个视图中使用的函数?

时间:2015-06-18 20:13:25

标签: angularjs

我在模板HTML中有ng-if

<div ng-if="isImage(item._file) == false">

因此,方法isImage()位于当前控制器上。我怎样才能做一个常用的方法isImage()我不会在每个控制器上重复并可以从视图中调用?

1 个答案:

答案 0 :(得分:0)

我可以告诉你两种方法。 简单但不理想的方式: 在您的全局控制器或应用程序运行块中:

$rootScope.isImage = function () {
    ...
    return true;
}

rootScope绑定变量可以在应用内部的任何位置访问,因此您不需要将它们放在控制器中。

正确的,稍微复杂一点的方法是使用自定义指令。 我还没有对此进行测试,但有些内容如下:

angular.module('myApp').directive("isImage", function () {
return {
    restrict: 'E',
    scope: {
        src: '=src'
    },
    link: function (scope, element, attrs) {
        if (!isImage(scope.src)) { //your logic for deciding if it's an image here
            element.hide();
        }
    }
};

});

并在你的HTML中:

<is-image src="myImage"></is-image>