Jquery ui AngularJs+;JqueryUI滑块初始值

Jquery ui AngularJs+;JqueryUI滑块初始值,jquery-ui,angularjs,angularjs-directive,Jquery Ui,Angularjs,Angularjs Directive,这是我在这里的第一篇文章,所以我希望它会是全面的 我使用的是AngularJs,我使用angular指令添加了一个JqueryUI滑块。 我已经找到了很多关于如何做到这一点的例子,但是没有一个能告诉我如何从范围向滑块添加初始值 这是一个 任何形式的帮助都将不胜感激,谢谢 这是您的代码,我在更改的地方添加了注释。您遇到的一个主要问题是,您试图在scope.days有任何数据之前从它访问数组元素 小提琴 var testApp= angular.module('testApp',['ngResour

这是我在这里的第一篇文章,所以我希望它会是全面的

我使用的是AngularJs,我使用angular指令添加了一个JqueryUI滑块。 我已经找到了很多关于如何做到这一点的例子,但是没有一个能告诉我如何从范围向滑块添加初始值

这是一个


任何形式的帮助都将不胜感激,谢谢

这是您的代码,我在更改的地方添加了注释。您遇到的一个主要问题是,您试图在
scope.days
有任何数据之前从它访问数组元素

小提琴

var testApp= angular.module('testApp',['ngResource']);

testApp.directive('sliderDays', function() {
  return {
    link: function(scope, elem,attrs) {
      $(elem).slider({
        range: true,
        min: scope.days[1],
        max: scope.days[scope.days.length-1],
        values: [scope.days[0], scope.days[scope.days.length-1]],
        slide: function( event, ui ) {
          console.log(ui.values[0], ui.values[1]);
        }
      });
    }
  }
});

function TestCtrl($scope)
{
    $scope.days=[1,2,3,4,5,10,25];
}

查看

<div ng-app="testApp">
    <div ng-controller="TestCtrl">
        <p><span>{{days[0]}}</span> - <span>{{days[days.length-1]}}</span></p>
        <div slider-days days="days"></div>
    </div>
</div>

好的,但是如果我需要在远程请求之后加载数据,就像我在我的示例中所做的那样?还有另一种方法,或者我只是误解了这种指令的用法?angular的摘要循环应该更新您发送给指令的信息。您只需要添加一些编程检查。您还可以查看为指令设置双向数据绑定隔离作用域,例如
作用域:{days:=“}
(请查看以获取更多信息)。如果是一次调用数据,您可以解析该信息,从而在视图呈现之前获得数据(更多信息请参见此处(查找解析属性)),我使用带有角度ui的“ui If”控制器解决了此问题,如本文所述,[链接]谢谢!
var testApp= angular.module('testApp',['ngResource']);

testApp.directive('sliderDays', function() {
  return {
    link: function(scope, elem,attrs) {
      $(elem).slider({
        range: true,
        min: scope.days[1],
        max: scope.days[scope.days.length-1],
        values: [scope.days[0], scope.days[scope.days.length-1]],
        slide: function( event, ui ) {
          console.log(ui.values[0], ui.values[1]);
        }
      });
    }
  }
});

function TestCtrl($scope)
{
    $scope.days=[1,2,3,4,5,10,25];
}