在作用域中声明函数并稍后调用它

Declare function inside scope and call it later

本文关键字:调用 函数 作用域 声明      更新时间:2023-09-26

呼叫callService函数失败。相反,除了"制作控制器...."之外,控制台没有显示任何控制台消息。我使用指令ng-click="callService()"从HTML按钮进行调用。我不熟悉角,有人能给我指个方向吗?代码如下:

(function() {
    console.log('making a controller....');
    'use strict';
    angular.module('myModule').controller('myController', myController);
    myController.$inject = ['$scope','$http'];

    function myController($scope, $http) {
        console.log("controller initialized...");
            $scope.callService = function(){
            console.log("callService called...");
            var urlSearchService = 'http://domain/proj/rs/stuff/moreStuff';
            var skuVal = $scope.skuField;
            var mVenVal = $scope.mVendorField;
            //need to somehow specifiy that xml is a @FormParam
            var xmlItemSearchRequest = "<ItemSearchRequest>"
                            +"<skuid>" + skuVal + "</skuid>"
                            +"<mvendor>" + mVenVal + "</mvendor>"
                        +"</ItemSearchRequest>";
            console.log('calling: ' + urlSearchService + 'sending xml: ' + xmlItemSearchRequest);
            $http.post(urlSearchService, xmlItemSearchRequest).
                success(function(data){
                    $scope.searchResults = data;
                    console.log('call to ' + urlSearchService + ", was a success.");
                }).error(function(data, status) {
                      console.error('Calling error', status, data);
                });
        };
    };
})();

您在控制器函数的范围内声明callService函数,因此无法从$scope访问它。你需要将它添加到$scope中,以便能够在你的模板中使用它。

代替:

var callService = function(){

:

$scope.callService = function(){

根据您的最新评论,您没有正确绑定控制器。

:

<div data-ng-controller="inventorySearchController"><input type="button" class="btn btn-primary btn-lg" ng-click="callService()" value="Search" /></div> –
应:

<div data-ng-controller="myController"><input type="button" class="btn btn-primary btn-lg" ng-click="callService()" value="Search" /></div> –