AngularJS - 努力将价值传递给工厂

AngularJS - Struggling to pass value to factory

本文关键字:工厂 值传 努力 AngularJS      更新时间:2023-09-26

首先,我想说我对AngularJS相当陌生,所以可能是我用一些奇怪的问题来问我的问题。

我正在尝试将字符串传递给工厂,作为回报,工厂会从我的数据库中给我一个结果。当我对值进行硬编码时,一切正常。但是当我尝试从我的视图/控制器传递旅馆值时,事情就会停止工作。

这是我的工厂:

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

这是我使用的控制器:

$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 不是函数

正如我提到的,我对此很陌生,所以我可能离得很远。任何帮助将不胜感激。

这行代码的目的是什么?

     $scope.entry = new Entry();

输入是您要呼叫的服务。
您应该通过依赖关系注入将其传递到控制器中。Angular 为您做"新"服务。

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

我没有看到您的$resource配置有任何错误。

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

错误位于代码的其他部分,请完全发布您的控制器。