2016-02-19 41 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 

错误在于对代码的其他部分,请彻底发表您的控制器。