angularjs,为指令创建过滤器

标签 angularjs

我正在尝试创建 filter在 Angular 上可以对绑定(bind)到指令的数据的输出方式产生影响,类似于 json过滤器可以应用于表达式。

不过,我在这方面遇到了很多麻烦,因为似乎定义过滤器不足以处理内联表达式以外的任何事情。不过,我绝对肯定我以前见过它。

问题

有没有可能创建 与指令内联工作的过滤器?像这样?

<div ng-directive="Model.Target | filterName"></div>

更新
ng-model只是一个例子。我不是在寻找现有的过滤器,我不是在寻找如何应用过滤器,我不是在寻找 ng-repeat .我特别想创建一个可以使用指令的新过滤器。

更新 2

尝试多做一点,我研究了 angular源代码( line 154 of filters.js) 并试图在那里模拟代码,但我遇到了奇怪的行为。使用此代码;
.filter('sample', function () {
    return function (obj) {
        console.log("typoef: ", typeof obj);
    }
});

我试图将它绑定(bind)到一个指令;
<div data-ng-custom-directive="Model.Tags | sample"></div>

我得到错误...

Uncaught TypeError: undefined is not a function



自定义指令实际上并没有什么特别之处,它只是获取给定的对象并对其进行一些解析,然后再将其发送到 $scope.Model.Tags。目的。

有人提到您不能在 ng-model 上放置过滤器,这让我很困惑。只是ng-model ,或者它是不是 ng-repeat 的任何指令你不能应用指令?据我了解,根本没有针对 ng-model 编写的过滤器。 ,虽然我并不想完全这样做,但这个概念并没有太大的不同。

最佳答案

问题不在于过滤器,而在于您对指令的变量(属性)使用什么类型的绑定(bind)。您需要使用 '=' .例子:

HTML

<div ng-init="test = [1,2,3,4,5]">
    <div dir-a="test | limitTo:3"></div>
</div>

JS
.directive('dirA', function() {
    return {
        scope: {
            dirA: '=' // this is important, '@' would not work
        },
        link: function($scope, iElm, iAttrs, controller) {
            console.log('$scope.dirA = ', $scope.dirA);
        }
    };
});

打印到控制台 "$scope.dirA = " Array [ 1, 2, 3 ]

关于angularjs,为指令创建过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25533508/

相关文章:

javascript - 在我的模板中包含 Angular 后,选项卡无法正常工作

angularjs - AngularJS-过滤空对象

ios - 适用于 iOS 的 Ionic 和 Cordova 中的奇怪内存泄漏

javascript - 从javascript函数注入(inject)javascript资源

angularjs - 一个元素的多个指令可以共享一个隔离的范围吗?

javascript - 如何使用 AngularJS 和 RequireJS 设置 Skrollr.js

angularjs - Redux store 应该是每个模块一个,或者是一个包含多个模块的整个应用程序

angularjs - Firebase:如何从两个节点查询不重叠的数据?

javascript - Mapbox map 在页面加载时无法正确渲染

javascript - AngularJS:REST API 调用的表达式值