javascript-在过滤器中从$rootScope调用实用程序函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-在过滤器中从$rootScope调用实用程序函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2053字,纯文字阅读大概需要3分钟。
内容图文
![javascript-在过滤器中从$rootScope调用实用程序函数](/upload/InfoBanner/zyjiaocheng/678/2f086cefd9914668a98844272e06f212.jpg)
我有一个实用程序函数notNull()打算与以下过滤器一起使用:
...| filter:notNull()"
我在更多指令中需要它,这就是为什么我将其放在$rootScope中.
问题是我的过滤器没有被调用,我创建了一个示例plnkr:
http://plnkr.co/edit/Nq0iLw?p=preview
有人可以帮忙吗?为什么不调用过滤器而不过滤我的物品?
PS.过滤器中的此表达式不能用于null:
...| filter:{myProp:!null}
解决方法:
[注意:更新以相反的时间顺序排列.]
更新2
首先,回答您的问题“为什么… |过滤器:{myProp:!null}不起作用:
这是因为您尝试使用的语法(根据the docs)仅适用于字符串值(而null不是字符串值).
您可以创建(并附加到您的应用程序)自定义过滤器:
app.filter("notEqual", function() {
return function(items, key, value) {
var filtered = [];
items.forEach(function(item) {
if (item && (item[key] !== undefined)
&& (item[key] !== value)) {
filtered.push(item);
}
});
return filtered;
};
});
然后从这样的任何指令中使用它:
...| notEqual:'<keyName>':<valueToCompareAgainst>
例如.:
app.directive("mytag", function() {
return {
restrict: "E",
template: "<div ng-repeat=\"item in myModel | notEqual:'a':null\">"
+ " item: {{item}}"
+ "</div>",
scope: {
myModel: "="
}
};
});
另请参见其他short demo.
更新
对服务方法或工厂使用实用程序方法可能是一个更好的主意,该方法应可用于许多控制器/作用域并且应可自定义.例如.:
app.factory("notNullFactory", function() {
var factory = {};
factory.notNull = function(caption) {
return function(item) {
console.log(caption + " " + JSON.stringify(item));
return (item !== null);
};
};
return factory;
});
现在,您可以使用notNullFactory的notNull(…)函数来创建可自定义的过滤器函数:
app.directive("mytag", function(notNullFactory) {
return {
restrict: "E",
template: "<div>"
+ " <div ng-repeat=\"item in myModel | filter:notNull('Checking')\">"
+ " item: {{item}}"
+ " </div>"
+ "</div>",
scope: {
myModel: "="
},
link: function($scope) {
$scope.notNull = function(caption) {
return notNullFactory.notNull(caption);
};
}
};
});
另请参见其他short demo.
不是您的过滤器没有被调用,而是未定义.在定义$scope.notNull并将其设置为等于$rootScope.notNull时,后者是未定义的.
相反,您可以摆脱链接属性并使用:
...| filter:$parent.notNull()...
另请参见此short demo.
内容总结
以上是互联网集市为您收集整理的javascript-在过滤器中从$rootScope调用实用程序函数全部内容,希望文章能够帮你解决javascript-在过滤器中从$rootScope调用实用程序函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。