Извлечение данных на основе необязательного параметра в угловой директиве

#angularjs #angularjs-directive

#angularjs #angularjs-директива

Вопрос:

У меня есть директива angular, которая отображает список разрешений. Эта директива будет использоваться в двух местах: на экране транспортного средства и на экране разрешений.

На экране транспортного средства будут показаны разрешения для этого конкретного транспортного средства. На экране разрешений будут показаны все разрешения.

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

Вот фрагмент того, что у меня есть, и он работает, когда указан атрибут vehicle, но как мне заставить его работать в случае, когда это не так?

 angular.module("app").directive('etVehiclePermits', function () {
    return {
        restrict: "E",
        templateUrl: "app/vehicles/permits/etVehiclePermits.html",
        scope: {
            vehicle: '@'
        },
    controller: function ($scope, $attrs, dataService) {
        $attrs.$observe('vehicle', function (value) {
            if (value != '') {
                dataService.getPermits(value).then(function (data) {
                    $scope.permits = data;
                });
            }
        });
 

Ответ №1:

Это очень сильно зависит от того, как вы dataService.getPermits работаете. Если это простой случай, когда он получает только разрешения для транспортного средства, когда используется этот параметр, и получает все разрешения в противном случае, тогда вы можете сделать что-то вроде приведенного ниже кода (значение не определено, если транспортное средство не предоставлено).

 $attrs.$observe('vehicle', function (value) {
       dataService.getPermits(value).then(function (data) {
                $scope.permits = data;
            });
        }
    });