Andy Lanng Ответов: 0

Внутри Ngrepeat директива


Привет,

Я хочу иметь общий контроль за отбором поставщиков. Я попытался получить поставщиков в изолированном объеме. Метод вызвал и обновил массив, но ng-repeat не обновился. Поэтому я попытался пройти через поставщиков в качестве источника данных. Опять же, ng-repeat не обновляется.

Конечно, это возможно. Что я упускаю?

Текущая Директива:
angular.module('cpDirectives', [])
    .directive('chooseASupplier', function () {
    return {
        restrict: 'EA', 
        scope: {
            callback: '&',
            dataSource : '='
        },
        templateUrl: "/Resources/htmlTemplates/ChooseASupplier.html"
    };
});

и шаблон:
<div class="choose-supplier">
    <h1>
        Choose a Supplier
    </h1>
    <div class="supplierIconClass" ng-repeat="supplier in suppliers" ng-click="callback(supplier.Id)">
        <img ng-src="~/Resources/images/supplier/{{supplier.EalId}}" ng-alt="{{supplier.Name}}" ng-title="{{supplier.Name}}"/>
    </div>
</div>


Использование:
<script>
    
    masterApp.controller('uploaderController',['$scope',function($scope) {
        

        $scope.suppliers = [];

        $scope.$parent.rateHub.run("getSuppliersSafe")
        .then(function (response) {
            if (response.error) {
                if (response.hasOwnProperty("errorDetail")) {
                    console.log(response.errorDetail)
                }
                $scope.error(response.error);
            } else {
                $scope.suppliers = response.data;
            }
        });

        $scope.supplierChoice = function(supplierId) {
            
        }

    }])

</script>

<style>
    
    .wizard-panel {
        width: 98%;
        height: 98%;
        margin: 1%;
        padding: 1%;
        background-color: #eeeeee;
        background-color: rgba(238,238,238,.4
</style>

<div ng-controller="uploaderController">
    
    <div class="wizard-panel">
        <div class="wizard-page page-1">
            <choose-a-supplier callback="supplierChoice(supplierId)" dataSource="suppliers"></choose-a-supplier>
        </div>
    </div>
</div>


Что я уже пробовал:

Я попробовал с изолированным прицелом, но все равно ничего:

angular.module('cpDirectives', [])
    .directive('chooseASupplier', function () {
      
        var controller = ['$scope', function ($scope) {

            $scope.suppliers = [];

            $scope.$parent.rateHub.run("getSuppliersSafe")
            .then(function(response) {
                if (response.error) {
                    if (response.hasOwnProperty("errorDetail")) {
                        console.log(response.errorDetail)
                    }
                    $scope.error(response.error);
                } else {
                    $scope.suppliers = response.data;
                }
            });
    }];    
      
    return {
        restrict: 'EA', //Default for 1.3+
        scope: {
            callback: '&'
        },
        controller: controller,
        templateUrl: "/Resources/htmlTemplates/ChooseASupplier.html"
    };
});



<div class="choose-supplier">
    <h1>
        Choose a Supplier
    </h1>
    <div class="supplierIconClass" ng-repeat="supplier in vm.suppliers" ng-click="callback(supplier.Id)">
        <img ng-src="~/Resources/images/supplier/{{supplier.EalId}}" ng-alt="{{supplier.Name}}" ng-title="{{supplier.Name}}"/>
    </div>
</div>

0 Ответов