используя дублированные переменные JavaScript

0

Поэтому на моей странице у меня есть данные, которые выводятся как:

   var firststep = 1;
   var secondstep = 2;
   var thirdstep = 3;
   var fourstep = 4;

   var firststep = 1;
   var secondstep = 2;
   var thirdstep = 3;
   var fourstep = 4;

Значения фактически выводятся сервером, однако мне нужно повторно использовать значения независимо. Я могу передать дополнительное значение, например:

   var category = flight;

но остальные значения, как указано выше.

Например, я пытаюсь использовать несколько ползунков, но два ползунка используют последние JS-вары, я передаю их через:

  $scope.first[1]=firststep;
  $scope.first[2]=secondstep;
  $scope.first[3]=thirdstep;
  $scope.first[4]=fourstep;

однако не могу понять, как я могу справляться с несколькими ситуациями, использующими одни и те же вары.

Теги:
arrays
uislider

1 ответ

0

Если вы используете несколько слайдеров с одинаковыми именами переменных, вы должны перенести эти переменные в объект/модель.

например, в области контроллера

$scope.default_values = {
    firststep: 1,
    secondstep: 2,
    thirdstep: 3,
    fourthstep: 4,
};
$scope.slider_1_values = angular.copy($scope.default_values);
$scope.slider_2_values = angular.copy($scope.default_values);

а затем в вашем представлении/контроллере вы используете соответствующие объекты slider_1_values или slider_2_values. вы можете использовать ng-model = "slider_1_values", чтобы использовать для ввода в качестве модели определенный объект.


Я думаю, что лучший вариант в вашем случае - превратить слайдер в "директиву", чтобы вы могли повторно использовать слайдер с разными переменными, назначив ему другую модель.

<custom-slider ng-model="slider_1_values"></custom-slider>
<custom-slider ng-model="slider_2_values"></custom-slider>

app.directive('customSlider', function() {
    return {
        "restrict": "E",
        "templateUrl": "yourslider_theme.html",
        "controller": function($scope) {
            //depending on the ng-model="" your 
            $scope.values now contain a different set of same variables
        },
        "link": function($scope, $element, $attr) {
            $scope.values = $scope[$attr['ngModel']];
        }
    };
});
  • 0
    В моем коде я в основном повторно использую переменные области видимости, объявляя функцию переменной: $ scope.values = function (value) {return $ scope.first [value]; }, а затем назовите его $ scope.values ($ scope.slide ['slider_1']). Не будет ли проще изменить функцию scope.values для разделения на основе имени?
  • 0
    Возможно нет. То, что вы пытаетесь сделать, это то, для чего предназначены директивы в angular imo.

Ещё вопросы

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