AngularJS - slider.noUiSlider 不是函数
AngularJS - slider.noUiSlider is not a function
问题背景:
我正在尝试在我的 Angular 应用程序中实现以下范围滑块 (NoUiSlider):
http://vasyabigi.github.io/angular-nouislider/
问题:
我已经按照要求实现了代码,但是在 Chrome 的控制台中有多个与此滑块相关的错误。
控制台错误将显示在以下源代码下方
这是来自 Angular 应用程序的代码:
App.js 显示 'nouislider' 依赖关系:
angular
.module('app', [
'ui.router',
'ui.bootstrap',
'ngResource',
'nouislider'
])
.config(['$urlRouterProvider', '$stateProvider', function ($urlRouterProvider, $stateProvider) {
$urlRouterProvider.otherwise('/');
$stateProvider
.state('home', {
url: '/',
templateUrl: 'home.html',
controller: 'HomeController'
})
.state('update', {
url: '/update',
templateUrl: 'Update.html',
controller: 'UpdateController'
})
}]);
var app = angular.module('app');
更新包含与滑块相关的范围属性的控制器:
app.controller('UpdateController', function ($scope, searchService) {
$scope.searchingService = searchService;
$scope.test = { 'single': 0, 'to': 0, 'from': 0 };
$scope.searchFormUpdate = {};
$scope.hideSearch = true;
$scope.search = function () {
$scope.searchingService.updateSearchList(
$scope.searchFormUpdate.item,
$scope.searchFormUpdate.catagory,
$scope.searchFormUpdate.country);
}
$scope.items = [];
$scope.currentPage = 1,
$scope.numPerPage = 10,
$scope.maxSize = 5;
$scope.$watchCollection('searchingService.searchList', function (newVal, oldVal) {
$scope.searchingService.searchList = newVal;
$scope.items = [];
for (i = 1; i <= $scope.searchingService.searchList.length; i++) {
$scope.items.push($scope.searchingService.searchList[i]);
}
$scope.filterItems();
})
$scope.$watch('currentPage + numPerPage', function () {
$scope.filterItems();
});
$scope.filterItems = function () {
var begin = (($scope.currentPage - 1) * $scope.numPerPage),
end = begin + $scope.numPerPage;
$scope.searchingService.filteredItems = $scope.searchingService.searchList.slice(begin, end);
}
});
Update.html 查看:
<div ng-controller="UpdateController" ng-show="hideSearch">
<div class="form-group">
<div slider ng-model="test.single" start=1 end=10></div>
<div slider ng-from="test.from" ng-to="test.to" start=0 end=100 step=5></div>
</div>
</div>
Chrome 来自控制台的错误:
angular.js:10147 TypeError: slider.noUiSlider is not a function
at link (http://localhost:55315/Scripts/bower_components/angular-nouislider/src/nouislider.js:63:16)
at http://localhost:55315/Scripts/bower_components/angular/angular.js:7170:44
at nodeLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6768:13)
at compositeLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6155:13)
at compositeLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6158:13)
at nodeLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6762:24)
at compositeLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6155:13)
at nodeLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6762:24)
at compositeLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6155:13)
at publicLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6051:30) <div slider="" ng-model="test.single" start="1" end="10" class="ng-isolate-scope ng-pristine ng-valid">(anonymous function) @ angular.js:10147
angular.js:10147 TypeError: slider.noUiSlider is not a function
at link (http://localhost:55315/Scripts/bower_components/angular-nouislider/src/nouislider.js:22:16)
at http://localhost:55315/Scripts/bower_components/angular/angular.js:7170:44
at nodeLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6768:13)
at compositeLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6155:13)
at compositeLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6158:13)
at nodeLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6762:24)
at compositeLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6155:13)
at nodeLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6762:24)
at compositeLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6155:13)
at publicLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6051:30) <div slider="" ng-from="test.from" ng-to="test.to" start="0" end="100" step="5" class="ng-isolate-scope">
目前我不确定如何修复 'slider.noUiSlider is not a function' 错误。我的应用程序中包含 angular,而这个 NoUiSlider 是目前唯一无法正常工作的部分。
如果您能从这些错误中找出滑块无法工作的原因,我们将不胜感激。
您必须确保将所有必需的依赖项添加到您的项目中,如 http://vasyabigi.github.io/angular-nouislider/:
中所述
<link rel="stylesheet" href="bower_components/nouislider/jquery.nouislider.css" />
<script src="bower_components/jquery/jquery.js"></script>
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/nouislider/jquery.nouislider.js"></script>
<script src="bower_components/nouislider/Link.js"></script>
<script src="bower_components/angular-nouislider/src/nouislider.js"></script>
我第一次尝试在 Plunker 中复制您的问题时遇到了同样的错误 "f.noUiSlider is not a function"
,直到我决定执行 bower install angular-nouislider
并从 bower_components
文件夹。对于其中一些必需的文件,我创建了新的 .js Plunker 文件并直接在其中 copy/pasted 它们的代码:
jqueryslider.js
== bower_components/nouislider/jquery.nouislider.js
link.js
== bower_components/nouislider/Link.js
nouislider.js
== bower_components/angular-nouislider/src/nouislider.js
正如您现在在 this Plunker test 上看到的那样,出现了滑动条并且没有抛出任何错误。
问题背景:
我正在尝试在我的 Angular 应用程序中实现以下范围滑块 (NoUiSlider):
http://vasyabigi.github.io/angular-nouislider/
问题:
我已经按照要求实现了代码,但是在 Chrome 的控制台中有多个与此滑块相关的错误。
控制台错误将显示在以下源代码下方
这是来自 Angular 应用程序的代码:
App.js 显示 'nouislider' 依赖关系:
angular
.module('app', [
'ui.router',
'ui.bootstrap',
'ngResource',
'nouislider'
])
.config(['$urlRouterProvider', '$stateProvider', function ($urlRouterProvider, $stateProvider) {
$urlRouterProvider.otherwise('/');
$stateProvider
.state('home', {
url: '/',
templateUrl: 'home.html',
controller: 'HomeController'
})
.state('update', {
url: '/update',
templateUrl: 'Update.html',
controller: 'UpdateController'
})
}]);
var app = angular.module('app');
更新包含与滑块相关的范围属性的控制器:
app.controller('UpdateController', function ($scope, searchService) {
$scope.searchingService = searchService;
$scope.test = { 'single': 0, 'to': 0, 'from': 0 };
$scope.searchFormUpdate = {};
$scope.hideSearch = true;
$scope.search = function () {
$scope.searchingService.updateSearchList(
$scope.searchFormUpdate.item,
$scope.searchFormUpdate.catagory,
$scope.searchFormUpdate.country);
}
$scope.items = [];
$scope.currentPage = 1,
$scope.numPerPage = 10,
$scope.maxSize = 5;
$scope.$watchCollection('searchingService.searchList', function (newVal, oldVal) {
$scope.searchingService.searchList = newVal;
$scope.items = [];
for (i = 1; i <= $scope.searchingService.searchList.length; i++) {
$scope.items.push($scope.searchingService.searchList[i]);
}
$scope.filterItems();
})
$scope.$watch('currentPage + numPerPage', function () {
$scope.filterItems();
});
$scope.filterItems = function () {
var begin = (($scope.currentPage - 1) * $scope.numPerPage),
end = begin + $scope.numPerPage;
$scope.searchingService.filteredItems = $scope.searchingService.searchList.slice(begin, end);
}
});
Update.html 查看:
<div ng-controller="UpdateController" ng-show="hideSearch">
<div class="form-group">
<div slider ng-model="test.single" start=1 end=10></div>
<div slider ng-from="test.from" ng-to="test.to" start=0 end=100 step=5></div>
</div>
</div>
Chrome 来自控制台的错误:
angular.js:10147 TypeError: slider.noUiSlider is not a function
at link (http://localhost:55315/Scripts/bower_components/angular-nouislider/src/nouislider.js:63:16)
at http://localhost:55315/Scripts/bower_components/angular/angular.js:7170:44
at nodeLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6768:13)
at compositeLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6155:13)
at compositeLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6158:13)
at nodeLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6762:24)
at compositeLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6155:13)
at nodeLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6762:24)
at compositeLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6155:13)
at publicLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6051:30) <div slider="" ng-model="test.single" start="1" end="10" class="ng-isolate-scope ng-pristine ng-valid">(anonymous function) @ angular.js:10147
angular.js:10147 TypeError: slider.noUiSlider is not a function
at link (http://localhost:55315/Scripts/bower_components/angular-nouislider/src/nouislider.js:22:16)
at http://localhost:55315/Scripts/bower_components/angular/angular.js:7170:44
at nodeLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6768:13)
at compositeLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6155:13)
at compositeLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6158:13)
at nodeLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6762:24)
at compositeLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6155:13)
at nodeLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6762:24)
at compositeLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6155:13)
at publicLinkFn (http://localhost:55315/Scripts/bower_components/angular/angular.js:6051:30) <div slider="" ng-from="test.from" ng-to="test.to" start="0" end="100" step="5" class="ng-isolate-scope">
目前我不确定如何修复 'slider.noUiSlider is not a function' 错误。我的应用程序中包含 angular,而这个 NoUiSlider 是目前唯一无法正常工作的部分。
如果您能从这些错误中找出滑块无法工作的原因,我们将不胜感激。
您必须确保将所有必需的依赖项添加到您的项目中,如 http://vasyabigi.github.io/angular-nouislider/:
中所述<link rel="stylesheet" href="bower_components/nouislider/jquery.nouislider.css" />
<script src="bower_components/jquery/jquery.js"></script>
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/nouislider/jquery.nouislider.js"></script>
<script src="bower_components/nouislider/Link.js"></script>
<script src="bower_components/angular-nouislider/src/nouislider.js"></script>
我第一次尝试在 Plunker 中复制您的问题时遇到了同样的错误 "f.noUiSlider is not a function"
,直到我决定执行 bower install angular-nouislider
并从 bower_components
文件夹。对于其中一些必需的文件,我创建了新的 .js Plunker 文件并直接在其中 copy/pasted 它们的代码:
jqueryslider.js
== bower_components/nouislider/jquery.nouislider.js
link.js
== bower_components/nouislider/Link.js
nouislider.js
== bower_components/angular-nouislider/src/nouislider.js
正如您现在在 this Plunker test 上看到的那样,出现了滑动条并且没有抛出任何错误。