当前位置: 首页 > 面试题库 >

动态更新AngularJS指令中的ion.rangeSlider ngModel

鲁博赡
2023-03-14
问题内容

Ion.RangeSlider 当绑定ng-model范围变量更改时,我正在尝试更新an的值。该模型更新时Ion.RangeSlider被使用,而不是相反。当
模型值更改时,具有相同ng-model的其他输入也会更新,因此这必须是一些特殊情况。

编辑:呜!这是一个片段@lin :)也是

1

Edit: Woo! Here’s a snippet @lin :) Also
jsfiddle.

var app = angular.module('ngModelIonRangeSliderDemo', []);



app.controller('MainCtrl', function ($scope, $rootScope, $timeout) {



    $scope.someNumber = 10;



}).directive('ionRangeSlider', function ionRangeSlider() {

   return {

      restrict: 'A',

      scope: {

         rangeOptions: '=',

         model: '=ngModel'

      },

      link: function (scope, elem, attrs) {

         scope.$watch('model',function () {

            elem.ionRangeSlider(scope.rangeOptions);

         });

      }

   }

});


<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.10/angular.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/1.1.2/ui-bootstrap.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.1.6/js/ion.rangeSlider.js"></script>

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.1.6/css/ion.rangeSlider.min.css" />

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.1.6/css/ion.rangeSlider.skinFlat.min.css" />



<div ng-app="ngModelIonRangeSliderDemo">

    <div ng-controller="MainCtrl" class="wrapper">

       <h3>Text input updates slider, but not vice-versa.</h3>

       <input ion-range-slider ng-model="someNumber" range-options="{min: -100, max: 100, step: .001}">

       <br/>

       <input type="text" ng-model="someNumber" class="form-control">

    </div>

</div>

我已经在十多个有点相关的堆栈溢出帖子中尝试了各种建议(这就是我在ngModel上设置当前scope.$watch方案的方式),但是没有一个起作用。我的控制台中没有任何错误。
怎么了?另外,为什么在我的指令中未提及模型却无法正常工作?如果有什么重要的事情我没能
包括在这篇文章中,请告诉我。


问题答案:

Just use slider.update() inside your directive and you will be fine:

var app = angular.module('myApp', []);



app.controller('MainCtrl', function ($scope, $rootScope, $timeout) {



    $scope.someNumber = 15;

    $scope.apply = false;



}).directive('ionRangeSlider', function ionRangeSlider() {

   return {

      restrict: 'A',

      scope: {

         rangeOptions: '=',

         model: '=ngModel',

         apply: '=apply'

      },

      link: function (scope, elem, attrs) {

         elem.ionRangeSlider(scope.rangeOptions);

         scope.$watch('apply',function () {

          if (scope.apply) {

            scope.apply = false;

            var slider = elem.data("ionRangeSlider");

            slider.update({

               from: scope.model

            });

          }

         });

      }

   }

});


<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.10/angular.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/1.1.2/ui-bootstrap.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.1.6/js/ion.rangeSlider.js"></script>

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.1.6/css/ion.rangeSlider.min.css" />

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.1.6/css/ion.rangeSlider.skinFlat.min.css" />



<div ng-app="myApp" ng-controller="MainCtrl" class="wrapper">

  <h3>Text input updates slider and vice-versa.</h3>

  <input ion-range-slider ng-model="someNumber" apply="apply" range-options="{min: -100, max: 100, step: .001}">

  <br/>

  <input type="text" ng-model="someNumber" class="form-control" ng-change="apply = true">

</div>


 类似资料:
  • 问题内容: 我正在尝试根据范围值使用不同的模板进行指令。 这是我到目前为止所做的,我不知道为什么它不起作用http://jsbin.com/mibeyotu/1/edit HTML元素: 指示: 问题答案: 1)您正在将内容作为属性传递到html中。试试这个: 代替: 2)指令的数据部分正在被编译,因此您应该使用其他东西。代替数据类型,例如datan-type。 链接在这里: http://jsb

  • 问题内容: 我花了一段时间试图找到一个优雅的解决方案,而我却找到了一个“可行”的解决方案,它感觉不是最简单或正确的做事方式。 所以,我的问题是…如何动态加载指令!在某些情况下,以下是我希望我能摆脱它的方式!除了模板加载之外,我没有包含路由或其他任何内容,而是为下面的控制器分配了ng- controller。 app.js template.html 任何人都可以提供的建议将不胜感激,如果我做任何明

  • 问题内容: 我有这样的设置: 控制器广播事件 指令侦听,然后通过append将其写入DOM,并以此创建指定指令的新元素。 IE浏览器: Angular从未调用过指令 当我检查DOM(并调试)时,我看到Controller 和指令正在执行其工作,并且有新的元素。 什么不见​​了?动态创建这些元素后需要做什么来触发指令调用? 问题答案: 请参阅。您可以类似于以下方式使用此服务: 这将执行新元素的编译和

  • 本文向大家介绍AngularJS动态菜单操作指令,包括了AngularJS动态菜单操作指令的使用技巧和注意事项,需要的朋友参考一下 前言         在我们创建一个angularJS应用的时候,菜单往往往是不可或缺的元素之一。也许在我们静态菜单的时候不会发现在指令中操作菜单收缩、折叠展开没有任何问题,因为我们在操作之前,页面元素渲染已经完成,所以在指令里面通过element查找目标元素可以成功

  • 问题内容: 我正在做的事情非常精简,可以解决问题。 我有一个简单的。每当您单击一个元素时,它都会添加另一个元素。但是,需要先对其进行编译才能正确呈现。 我的研究使我走向了。但是所有示例都使用了一个复杂的结构,我真的不知道如何在这里应用它。 小提琴在这里:http : //jsfiddle.net/paulocoelho/fBjbP/1/ JS在这里: Josh David Miller的解决方案:

  • 问题内容: 确实为此感到挣扎-尝试了我能想到的所有方法。希望有人可以提供帮助。 我有一条指令可以为我创建自定义控件的轮廓。定制控件的中心部分将由另一个动态生成的指令表示,该指令基于外部指令上的作用域变量的值。作用域变量包含内部指令的名称。我这样做是因为我的页面将包含多个动态生成的元素,这些元素均具有相同的布局,但内部内容不同。 即我的外部指令的示例: 设置为另一个指令的名称-在这种情况下。因此,我