为什么我使用AngularJS在控制器内部获得$ http

时间:2015-05-13 10:36:19

标签: angularjs

这有什么问题?

var modulo = angular.module('SWAApp', []);
modulo.controller('SWAAllocationController', ['$scope','$http', function RunSWAAllocation($scope,$http) {
    $scope.LaunchAllocation = function RunSWAAllocation($scope, $http) {
        $http.get('/MP3_SIOP/WS/SWAService.svc/PostSWAAllocation')
        .success(function (data) {
            pvt_BindHeaderData($scope, data);
            alert("SWA Allocation OK");
        })
        .error(function (data, status) {
            alert("Si è verificato un errore nel dei dati!")
        });
    }
}]);

<div class="row" ng-controller="SWAAllocationController">
        <button type="button" ng-click="LaunchAllocation()">Run Allocation </button> ...

这给我$ http undefined(以及$ scope)

非常感谢你的帮助。

PS:对不起,如果我错过了什么或做错了什么,这是我的第一个问题,我对AngularJS不熟练

3 个答案:

答案 0 :(得分:3)

从方法$scope.LaunchAllocation中删除 $ scope和$ http

$ scope和$ http是您在控制器中导入的依赖项,无需在方法中添加参数。你可以直接使用它。如果你在方法中使用它作为参数并且在调用时没有传递任何东西(从ng-click),显然它们都是未定义的。

$scope.LaunchAllocation = function() {
        $http.get('/MP3_SIOP/WS/SWAService.svc/PostSWAAllocation')
        .success(function (data) {
            pvt_BindHeaderData($scope, data);
            alert("SWA Allocation OK");
        })
        .error(function (data, status) {
            alert("Si è verificato un errore nel dei dati!")
        });
    }

此外,您无需在功能之后输入功能名称。您正在调用函数$scope.LaunchAllocation而不是另一个函数。所以它实际上不需要

答案 1 :(得分:0)

我认为$http

中的undefined {/ 1}}
$scope.LaunchAllocation = function RunSWAAllocation($scope, $http) {

替换为......

$scope.LaunchAllocation = function RunSWAAllocation() {

答案 2 :(得分:0)

我认为你应该替换

$scope.LaunchAllocation = function RunSWAAllocation($scope, $http)

$scope.LaunchAllocation = function RunSWAAllocation()