2015-10-22 102 views
0

我試圖從JSON文件讀取字符串數組和數據返回到一個變量,以形成一個詞過濾器列表中,但「未捕獲的語法錯誤」養出任何人都可以幫忙嗎?這裏來我的代碼:從JSON獲取字符串數組中angularjs控制器

var filterWords = $http.get('word.json').success(function(res) { 
     return angular.fromJson(res.data); 
    }); 

    $scope.filterWord = function($string) { 
     var wRegExp = new RegExp(filterWords.join("|"), "gi"); 
     return wRegExp.test($string); 
    }; 

在此先感謝!

+0

沒有'這裏的語法error'。代碼的另一部分會導致錯誤。 – hsz

+0

加號,我不確定你的代碼是否可以工作,你在第二個函數中把異步函數看作同步函數。 – Meir

+0

@Meir這是否意味着即使在調用了'filterWord()'後,數據可以設置爲'filterWords'? –

回答

2

你不必做angular.fromJson部分,AngularJS會替你。如果結果是JSON,res.data將包含從JSON解析的對象。

在行var wRegExp = new RegExp(filterWords.join("|"), "gi");你不等待filterWords的結果,所以你打電話給join("|")在HTTP承諾。我不確定你的代碼結構是什麼,因爲我只能看到你顯示的兩行,但也許你打算在success處理程序中設置一個變量?或者filterWord函數中有success處理程序?

+0

我需要json文件中的數據並將它們設置爲filterWord()。也許我應該在'filterWord'函數中擁有成功處理程序? –

+0

然後,我會將'filterWords'的名稱更改爲'filterWordsPromise',而不是在'success'處理程序中返回某些內容,而是執行'$ scope.filterWord = res.data'這樣的操作。請記住,由於調用是異步的,因此'$ scope.filterWord'將會被定義一段時間,然後被設置爲結果。 –

+0

非常感謝!所以你的想法是將'filterWord()'定義爲一個asyn函數,同時與'$ http.get'同步? –