Директива AngularJS, двусторонняя привязка для настраиваемого числа переменных

0

При создании директивы при определении области выделения с помощью двухсторонней привязки с использованием = есть ли способ привязать массив переменных области. то есть. если в моем контроллере у меня есть объекты, определенные как $scope.one, $scope.two и т.д., и может быть любое число из них - я хочу, чтобы директива могла обрабатывать настраиваемое количество из них. Как я мог это сделать?

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

.directive("example", function () {
    return {
        scope: {
          one: "=",
          two: "=",
          three: "="
        },
    ...
  • 0
    Для этого у вас есть объект attrs (атрибуты), но вы должны передать объект с таким количеством свойств, сколько хотите, в область действия директивы. Это предпочтительный метод для обработки
  • 0
    Вам нужны переменные для одноразового использования (или) вам нужен массив переменных для двухстороннего связывания, чтобы каждый раз, когда значение переменной внутри вашей директивы изменялось, оно отражалось в вашем главном контроллере?
Показать ещё 3 комментария
Теги:
angularjs-scope
angularjs-directive

1 ответ

1
Лучший ответ

Конечно, это:

.directive('example', function() {
   return {
     scope: {
       config: '='
     },
     link: function(scope) {
       var firstOption = scope.config[0];
       var secondOption = scope.config[1];
       //...
     }
   }
}

Параметры массива должны храниться с фиксированным индексом, поэтому он будет менее читабельным, чем передача объекта конфигурации

.directive('example', function() {
       return {
         scope: {
           config: '='
         },
         link: function(scope) {
           var firstOption = scope.config.firstOption;
           var secondOption = scope.config.secondOption;
           //...
         }
       }
    }
  • 0
    Лучше также использовать angular.extend для установки значений по умолчанию, чтобы сбросить свойства со значением по умолчанию, но это хороший ответ
  • 0
    Ах, спасибо, это имеет смысл - я попробую это так.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню