Javascript AngularJS:工厂和过滤器-工厂不工作
我有这个代码,它可以工作:Javascript AngularJS:工厂和过滤器-工厂不工作,javascript,angularjs,filter,factory,Javascript,Angularjs,Filter,Factory,我有这个代码,它可以工作: var-app=angular.module('twitterApp',['twitterApp.services','ngSanitize'); 应用程序过滤器('clearImage',函数(){ 返回函数(文本){ var str=text.replace(/_normal./g,'.'); 返回str; }; }); app.filter('链接',函数()){ 返回函数(文本){ var str=text.replace(/@([^']+)/g,函数(u,
var-app=angular.module('twitterApp',['twitterApp.services','ngSanitize');
应用程序过滤器('clearImage',函数(){
返回函数(文本){
var str=text.replace(/_normal./g,'.');
返回str;
};
});
app.filter('链接',函数()){
返回函数(文本){
var str=text.replace(/@([^']+)/g,函数(u,屏幕名称){
var-link='';
返回链接;
});
str=str.replace(/#([^']+)/g,函数(t,散列){
var-link='';
返回链接;
});
返回str;
};
}); 代码>工厂中有两个返回语句。
您需要创建一个对象,将方法分配给它,然后返回它
试试这个:
app.factory('StratoFactory', function() {
var factory = {};
factory.removeNormalStringFromImage = function(text) {
var str = text.replace(/_normal./g, '.');
return str;
}
factory.userName2Link = function(text) {
var str = text.replace(/@([^ ']+)/g, function(u, screen_name) {
var link = '<a target=blank href="http://twitter.com/intent/user?screen_name=' + screen_name + '">' + u + '</a>';
return link;
});
str = str.replace(/#([^ ']+)/g, function (t, hash) {
var link = '<a target=blank href="https://twitter.com/hashtag/' + hash + '?src=hash">' + t + '</a> ';
return link;
});
return str;
}
return factory;
});
app.factory('StratoFactory',function(){
变量工厂={};
factory.removeNormalStringFromImage=函数(文本){
var str=text.replace(/_normal./g,'.');
返回str;
}
factory.userName2Link=函数(文本){
var str=text.replace(/@([^']+)/g,函数(u,屏幕名称){
var-link='';
返回链接;
});
str=str.replace(/#([^']+)/g,函数(t,散列){
var-link='';
返回链接;
});
返回str;
}
返回工厂;
});
我终于找到了解决方案!控制台中没有任何错误,因为所有内容的结构都正常。但问题是我的过滤器没有返回任何东西。所以我只是加了一个回报,现在一切都好了。这真是一个老生常谈的错误。代码如下:
var app = angular.module('twitterApp', ['twitterApp.services', 'ngSanitize']);
app.factory('StratoFactory', function() {
var factory = {};
factory.removeNormalStringFromImage = function(text) {
var str = text.replace(/_normal./g, '.');
return str;
},
factory.userName2Link = function(text) {
var str = text.replace(/@([^ ']+)/g, function(u, screen_name) {
var link = '<a target=blank href="http://twitter.com/intent/user?screen_name=' + screen_name + '">' + u + '</a>';
return link;
});
str = str.replace(/#([^ ']+)/g, function (t, hash) {
var link = '<a target=blank href="https://twitter.com/hashtag/' + hash + '?src=hash">' + t + '</a> ';
return link;
});
return str;
};
return factory;
});
app.filter('clearImage', function(StratoFactory) {
return function(text) {
**return** StratoFactory.removeNormalStringFromImage(text);
};
});
app.filter('links', function(StratoFactory) {
return function(text) {
**return** StratoFactory.userName2Link(text);
};
});
var-app=angular.module('twitterApp',['twitterApp.services','ngSanitize');
应用程序工厂('StratoFactory',函数(){
变量工厂={};
factory.removeNormalStringFromImage=函数(文本){
var str=text.replace(/_normal./g,'.');
返回str;
},
factory.userName2Link=函数(文本){
var str=text.replace(/@([^']+)/g,函数(u,屏幕名称){
var-link='';
返回链接;
});
str=str.replace(/#([^']+)/g,函数(t,散列){
var-link='';
返回链接;
});
返回str;
};
返回工厂;
});
应用程序过滤器('clearImage',函数(StratoFactory){
返回函数(文本){
**返回**StratoFactory.removeNormalStringFromImage(text);
};
});
app.filter('links',函数(StratoFactory){
返回函数(文本){
**返回**StratoFactory.userName2Link(文本);
};
});
javascript sandbox将非常有用。hi@STEVER,我一直在使用本页的代码。只是,我添加了这些过滤器并将它们应用到JSON响应中。是的,这是一个错误,但它仍然不起作用。我在页面上没有任何错误,但是当我在JSON上应用过滤器时,页面没有显示任何内容。