无法从AngularJS范围获得价值

时间:2018-07-25 09:08:00

标签: angularjs

我在AngularJS中已有一个项目。有一个带有客户地址的HTML页面。它的标记是:

<div class="text-left m-t-lg">
    <h5>
        Address
    </h5>
    <address>
        <div ng-show="customerInfo.companyName != ''"><small>{{customerInfo.companyName}}</small><br /></div>
        <div ng-show="customerInfo.customerName != ''"><small>{{customerInfo.customerName}}</small><br /></div>
        <div ng-show="customerInfo.address != ''"><small>{{customerInfo.address}}</small><br /></div>
        <div ng-show="customerInfo.email != ''"><small><a href="mailto:{{customerInfo.email}}">{{customerInfo.email}}</a></small></div>
    </address>
</div>

指令:

app.directive('addressHeader', function () {
    return {
        scope: {
            addressHeaderInfo: '=info'
        },
        templateUrl: 'address/addressHeader.html',
        controller: 'addressHeaderController',
        controllerAs: 'ahc'
    };
});

我的问题是在addressHeaderController.js中,我看不到addressHeaderInfo或info或customerInfo对象。我需要更新该对象。该对象从哪里初始化?我对AngularJS不太了解。

控制器:

app.controller('addressHeaderController', ['$http', 'APIService', '$scope', '$stateParams', '$sessionStorage', '$translate', '$state', '$rootScope', '$timeout', '$locale', 'tmhDynamicLocale',
    function ($http, APIService, $scope, $stateParams, $sessionStorage, $translate, $state, $rootScope, $timeout, $locale, tmhDynamicLocale) {
        var ctl = this;

        $scope.followingAddress = false;
        $scope.followData = {};
        $scope.issueDisplay = '';
        $scope.showResend = true;
        $scope.showLoyaltyColumn = $sessionStorage.userObject.clientInfo.showLoyaltyColumnOnSurveyDetail;
        ctl.isOpen = false;
        ctl.dateOptions = { showWeeks: false };
        $scope.businessUnits = null;
        $scope.targetDealership = null;
        $scope.realignComment = null;

        $scope.$watch('addressHeaderInfo', function () {
            debugger;
            //Where is $scope.addressHeaderInfo coming from?
            if (typeof ($scope.addressHeaderInfo) != 'undefined') {                
                //Some operations here. Not related to assigning anything to $scope.
            }
        });


        function getDepartmentData() {
            //No assignment here as well.
        }

        $scope.resendData = function () {
            if ($sessionStorage.clientObject.requiresResendJustification) {                                
                $('#resendJustificationModal').modal('show');
            }
            else {
                var resendData = {};
                resendData.recordId = $scope.addressHeaderInfo.addressID;
                resendData.statusId = 24;

                APIService.postData(resendData, 'Address/UpdateResendStatus')
                .then(function (data) {
                    if (data.status == 200) {                        
                        $rootScope.$broadcast('resendRequest');
                    }
                    else {
                        toastr["error"]('Error');
                    }
                });
            }
        }        

        $scope.nextAddress = function () {
            $rootScope.$broadcast('addressNavigation', $scope.AddressList[$scope.recordNumber]);
            $scope.recordNumber = $scope.recordNumber + 1;
        }

        $scope.previousAddress = function () {
            $rootScope.$broadcast('addressNavigation', $scope.AddressList[$scope.recordNumber-2]);
            $scope.recordNumber = $scope.recordNumber - 1;
        }

        $scope.followAddress = function () {
            APIService.postData($scope.addressHeaderInfo, 'Address/follow')
            .then(function (data) {
                if (data.status == 200) {
                    toastr["success"]($translate.instant('AddressFollowedSaved'));
                    $scope.followData = data.data;
                    $scope.followingAddress = true;
                }
                else {
                    toastr["error"]($translate.instant('AddressFollowedErrored'));
                }
            })
        }

        $scope.unfollowAddress = function () {
            APIService.deleteData('Address/follow/' + $scope.followData.AddressFavoriteId)
            .then(function (data) {
                if (data.status == 200) {
                    toastr["success"]($translate.instant('AddressUnfollowedSaved'));
                    $scope.followingAddress = false;
                }
                else if (data.status == 500) {
                    toastr["error"]($translate.instant('AddressUnfollowedErrored'));
                }
            });
        }

        $scope.AddressReminder = function () {
            $('#setReminderPopup').modal('show');
        }

        $scope.saveReminder = function () {
            $scope.followData.notificationDate = $scope.followData.displayDate;            
            APIService.postData($scope.followData, 'Address/follow/reminder')
            .then(function (data) {
                if (data.status == 200) {
                    toastr["success"]($translate.instant('AddressReminderSaved'));
                    $('#setReminderPopup').modal('hide');
                }
                else {
                    toastr["error"]($translate.instant('AddressReminderErrored'));
                }
            })
        }

        $scope.realignAddress = function () {
            if ($scope.addressHeaderInfo) {
                if (!$scope.businessUnits) {
                    getBusinessUnits();
                }
                var bu = $scope.addressHeaderInfo.businessUnit;
                if (bu) {
                    bu.realignDisplayName = bu.name + ', ' + bu.shippingCity + ', ' + bu.suppliedBusinessUnitNumber;
                }
                $scope.realignComment = null;
                $('#realignPopup').modal('show');
            }
        }

        $scope.saveRealignRequest = function () {
            var realignedAddress = $scope.addressHeaderInfo;
            var realignData = {
                AddressId: $scope.addressHeaderInfo.AddressID,
                businessUnitId: $scope.targetDealership.businessUnitID,
                notes: $scope.realignComment
            };
            APIService.postData(realignData, 'Address/requestRealignment')
            .then(function (data) {
                if (data.status == 200) {
                    toastr["success"]($translate.instant('AddressRealignRequestSaved'));
                    $('#realignPopup').modal('hide');
                    realignedAddress.realignmentStatus = 'Pending';  // cause Realign button to disappear and "Realignment is pending" message to show
                } else {
                    toastr["error"]($translate.instant('AddressRealignRequestErrored'));
                }
            });
        }

        $scope.$on('advanceToNextIssue', function (event, data) {
            if ($scope.AddressList && ($scope.recordNumber < $scope.AddressList.length)) {
                $scope.nextAddress();
            }
        });
    }]);

0 个答案:

没有答案