2014-03-25 72 views
2

我在工廠使用angularjs $http.get來執行API調用。當我運行我的angularjs應用程序時,它會返回數據。然而,當我使用F12看着在控制檯選項卡,它具有:從angular.js文件生成

"TypeError: boolean is not a function" 

此錯誤。請參閱下面的工廠代碼和listController代碼。

沒有人有任何想法,爲什麼下面的代碼原因angular.js產生:

"TypeError: boolean is not a function" and how to fix the following code to resolve this error? 

這裏是工廠代碼:

app.factory('MyFactory', function ($http) { 
    var dataFactory = {}; 
    var urlBase = 'api/suppliers/search?&q='; 
    dataFactory.search = function (searchString) { 
     var urlString = urlBase + searchString; 
     return $http.get(urlString) 
    } 
    return dataFactory; 
}); 

這裏是代碼打電話給工廠:

var ListController = function ($scope, $location, MyFactory) { 

    $scope.message = "List.html page"; 

    var searchstring = 'de'; 

    getSuppliers(); 

    function getSuppliers() { 
     MyFactory.search(searchstring) 
      .success(function (data) { 
       $scope.suppliers = []; 
       $scope.suppliers = data.items; 
      }) 
      .error(function (error) { 
       $scope.status = "Unable to load customer data: " + error.message; 
      }); 
    } 

}; 

回答

1

$http返回承諾。您需要撥打then()並將您的回撥傳遞給它

function getSuppliers() { 
    MyFactory.search(searchstring).then(function (data) { 
     $scope.suppliers = []; 
     $scope.suppliers = data.items; 
    },function (error) { 
     $scope.status = "Unable to load customer data: " + error.message; 
    }); 
} 
+0

感謝您的建議。我已經複製了你的代碼,但它仍然給了我同樣的錯誤。是不是.success(這是我原來的)與.then做同樣的事情? – user3439326

+0

'.success'在指示成功的http響應上被調用,例如2 ##分支中的大部分。如果遇到錯誤響應,例如4 ##和5 ##分支,則調用'.error',並調用'.then'。 '.then'是任何'q'承諾的一種方法(這是我相信角度使用的),但'.success'和'.error'是http promise。 – theheadofabroom

相關問題