3

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

我正在使用 AngularJs,并且使用 angular 指令添加了一个 JqueryUI 滑块。我找到了很多关于如何做到这一点的例子,但没有一个例子告诉我如何从范围内将初始值添加到滑块。

这是我创建的 jsfiddle

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

testApp.factory('remoteRequest', function($resource) {
var remoteRequest = $resource('/echo/json/');
return remoteRequest;
});

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[1]],
            slide: function( event, ui ) {
                console.log(ui.values[ 0 ] +" "+ ui.values[ 1 ]                 );
            }
        });
    }
}
});

function TestCtrl($scope, $resource, remoteRequest)
{
$scope.prova=1;
$scope.days=[];
var ret= remoteRequest.get(function(){
     $scope.days=[1,2,3,4,5,10,25];
});
}

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

4

1 回答 1

2

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

小提琴

http://jsfiddle.net/ntaUJ/24/

看法

<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>

代码

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];
}
于 2013-04-03T19:17:45.707 回答