2016-02-19 17 views
0

首先,我想說我對AngularJS來說相當新,所以可能是我用一些古怪的東西來問我的問題。AngularJS - 努力將價值傳遞給工廠

我想傳遞一個字符串到工廠,在返回給我從我的數據庫結果。當我硬編碼的值,一切正常。但是,當我嘗試從我的視圖/控制器傳遞客棧值事情停止工作。

這裏是我廠:

healthServices.factory('Entry', 
    function ($resource) { 
     return $resource('http://localhost:60673/api/hierarchy/:id', { id: '@id'}, { 
      query: { method: 'GET', isArray: true } 
     }); 
    }); 

下面是使用控制器IM:

$scope.changeData = function (type) { 
    $scope.entry = new Entry(); 
    $scope.id = type; 
    $scope.healthData = $scope.entry.$query({ id: $scope.id }); 
} 

,這是它的樣子在我的html:

<button ng-click="changeData('someValue')"> 

目前我不斷收到

TypeError: value.push is not a function

正如我剛纔提到的那樣,我對此很陌生,所以我可能離得很遠。任何幫助將非常感激。

+0

看不到任何在您的代碼中調用的.push函數,因此目前無法幫助您。 – Erazihel

+0

如果你只是想從數據庫中獲得一個結果,就像你看到的那樣,那麼你可以使用'$ scope.entry。$ get({id:$ scope.id});'。但正如@Erazihel所說,你沒有顯示觸發錯誤的代碼。 –

+0

你能提供你的服務器對這樣的請求的迴應嗎?如果它沒有返回一個數組,它可能會觸發上述錯誤。 –

回答

1

這行代碼的用途是什麼?

 $scope.entry = new Entry(); 

進入是您要撥打的服務。
你應該通過依賴注入將它傳遞給你的控制器。 Angular爲你做了'新'。

myApp.controller('myCntrl', HomeCtrl); 
    HomeCtrl.$inject = ['$scope', 'Entry']; 

    function HomeCtrl($scope, Entry) { 
     ... 
    } 
0

我沒有看到您的$資源配置有任何問題。

var myApp = angular.module('myApp',['ngResource']); 

myApp.factory('Entry', function ($resource) { 
      return $resource('http://localhost:60673/api/hierarchy/:id', { id: '@id'}, { 
       query: { method: 'GET', isArray: true } 
      }); 
     }); 


myApp.controller('myCtrl', ['$scope', 'Entry', function($scope, Entry){ 

    $scope.changeData = function (type) { 
     $scope.entry = new Entry(); 
     $scope.id = type; 
     $scope.healthData = $scope.entry.$query({ id: $scope.id }); 

    } 
}]); 

我得到下面的控制檯

GET http://localhost:60673/api/hierarchy/someValue 

錯誤在於對代碼的其他部分,請徹底發表您的控制器。