Сервис AngularJS не работает.Что я здесь не так делаю? - PullRequest
0 голосов
/ 13 декабря 2018

Мой модуль:

angular.module("aps",
[
    "ngAnimate", "ngTouch", "ui.grid", "ui.grid.saveState", "ui.grid.selection", "ui.grid.cellNav",
    "ui.grid.resizeColumns", "ui.grid.moveColumns", "ui.grid.pinning", "ui.bootstrap", "ui.grid.autoResize"
]);

Мой сервис:

angular.module("aps")
.service("OrderGridOptions",
    function() {
            return {
                enableFiltering: true,
                flatEntityAccess: true,
                showGridFooter: true,
                fastWatch: true,
                rowTemplate:
                    '<div ng-click="grid.appScope.selectOrder(row)" ng-repeat="(colRenderIndex, col) in colContainer.renderedColumns track by col.uid" class="ui-grid-cell" ng-class="col.colIndex()" ui-grid-cell></div>',
                columnDefs:
                [
                    { name: "WorkOrderID", width: 100, displayName: "Order ID" },
                    { name: "CustomerID", width: 120, displayName: "Customer ID" },
                    { name: "POSID", width: 100 },
                    { name: "CreateDate", width: 120 },
                    { name: "CreatedBy", width: 120 },
                    { name: "Description", visible: false },
                    { name: "EstimatedFinishDate", visible: false },
                    { name: "EstimatedHours", visible: false },
                    { name: "EstimatedCostLabor", visible: false },
                    { name: "EstimatedCostParts", visible: false },
                    { name: "ActualFinishDate", width: 150 },
                    { name: "ActualCostLabor", visible: false },
                    { name: "ActualCostParts", visible: false },
                    { name: "CheckoutBy", width: 120 },
                    { name: "CheckoutNotes", visible: false }
                ],
                data: []
            };
    });

Мой контроллер:

angular.module("aps").controller("TechSheetCtl",
[
    "TechSheetFactory", "$scope", "$rootScope", "$http", "$interval", "$modal", "$log", "uiGridConstants", "$q",
    "$filter", "CustomerGridOptions", "OrderGridOptions",
    function(TechSheetFactory,
        $scope,
        $rootScope,
        $http,
        $interval,
        $modal,
        $log,
        uiGridConstants,
        $q,
        $filter,
        CustomerGridOptions,
        OrderGridOptions) {

$scope.testTheService = function() {
    alert("testing service");
    alert(JSON.stringify(OrderGridOptions));
}

Я прикрепил testTheService к кнопке.Появляются оба оповещения, но второе пустое.Я пытаюсь не использовать $ rootScope для передачи данных между всеми моими контроллерами, и это кажется лучшим способом сделать это, за исключением того, что я не могу заставить его работать.

И я даже не знаю, если мойпредположение о передаче данных верно.Если я изменю массив данных службы на одном контроллере, сможет ли другой контроллер получить доступ к этому массиву?

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 14 декабря 2018

Я просто начал с нуля, используя точно такой же код.Я понятия не имею, что у меня было в старом коде, но мне все равно.Это сработало на этот раз.

...