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上应用过滤器时,页面没有显示任何内容。