2017-04-24 62 views
1

我叫從我的主控制器的過濾器這樣添加過濾器後返回主控制器的值?

apples = $filter('toTitleCase')(pears); 

一切都是爲了,這意味着不存在依賴關係來支付,一切都宣告。

然後,我也可以從外部訪問一個名爲filter.js我的過濾器。

app.filter('toTitleCase', function(){ 
    return function(x){ 
    x.replace(/\w\S*/g, function(txt) { 
     return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); 
    }); 
    } 
}); 

它所做的是,它需要一些輸入文本並以大寫形式打印第一個字母。

的問題是,當主控制器訪問filter.js,它需要合適的輸入,並與控制檯日誌,我可以看到,它確實讓大寫的第一個字母。但是,當filter.js文件返回值時,它會顯示爲未定義。

任何線索?

回答

0

問題:

與實際的過濾代碼的問題是,它只是處理字符串也不回,你需要讓你的filter回調返回處理字符串。

這是應該的代碼:

app.filter('toTitleCase', function() { 
    return function(x) { 
    return x.replace(/\w\S*/g, function(txt) { 
     return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); 
    }); 
    } 
}); 

說明:

你正在返回的功能,只處理字符串和uppercase第一個字符,但不將其返回,您需要在此函數中使用return聲明。

+0

這就是它!感謝您解釋:) – Robin

+0

不客氣。 –