【问题标题】:using duplicated javascript variables使用重复的 javascript 变量
【发布时间】:2015-07-02 18:06:40
【问题描述】:

所以在我的页面上,我的数据输出为:

   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;

但是不知道如何处理使用相同变量的多种情况。

【问题讨论】:

  • 冗余的var 声明被折叠起来,好像只有一个。因此,如果您的代码编写了两个 var firststep 声明,那么实际上只有一个变量“firststep”。
  • 最简单的方法是什么?我可以用数据属性做到这一点吗?因为我只能访问这些变量。
  • 正如@Pointy 指出的那样,相同变量名的多个 var 声明被折叠成一个,最后一个赋值会覆盖所有其他值。如果您能提供更多关于变量如何由服务器生成并注入控制器的信息,也许我们可以提出一个解决方案。

标签: javascript arrays angularjs uislider


【解决方案1】:

如果您使用多个具有相同变量名称的滑块,那么您应该将这些变量包装到一个对象/模型中。

例如在控制器的范围内

$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']];
        }
    };
});

【讨论】:

  • 在我的代码中,我基本上通过声明变量函数来重用范围变量: $scope.values=function(value){ return $scope.first[value]; } 然后以后调用它 $scope.values($scope.slide['slider_1']) 将scope.values函数更改为根据名称进行分隔不是更容易吗?
  • 可能不会。您正在尝试做的事情是指令在角度 imo 中的含义。
猜你喜欢
  • 2011-08-22
  • 1970-01-01
  • 2016-12-25
  • 1970-01-01
  • 1970-01-01
  • 2015-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多