包含 AngularJS 多个选择的指令时出错
Getting error while including AngularJS multiple chosen directive
我在执行 AngularJS 选择的指令时遇到以下错误。
Error:
TypeError: a.map is not a function
at nh.q.writeValue (angularjslatest.js:307)
at Object.e.$render (angularjslatest.js:328)
at angularjslatest.js:310
at angularjslatest.js:146
at m.$digest (angularjslatest.js:147)
at m.$apply (angularjslatest.js:150)
at l (angularjslatest.js:102)
at XMLHttpRequest.s.onload (angularjslatest.js:108)
我在下面解释我的代码:
<select chosen
multiple
class="form-control oditek-form"
name="category"
id="category"
ng-model="category"
ng-options="s.value as s.name for s in listOfCategory">
</select>
我的控制器代码如下。
$scope.listOfCategory = [{
name: 'Select Category',
value: ''
}];
$scope.category = $scope.listOfCategory[0];
var fileURL = '';
var url1 = '../service/admin/vechile/service/service.php?action=getAllCategoryData';
var method = 'GET';
var data1 = '';
DataService.connectToServerSideScript(method, url1, data1).then(function(response) {
if (response.length > 0) {
angular.forEach(response, function(obj) {
var cdata = {
'name': obj.category_name,
'value': obj.id
};
$scope.listOfCategory.push(cdata);
})
}
}, function(error) {
});
我在这里获取了所有数据,但这些错误出现在浏览器控制台中。这里我需要清除那些错误。
您需要将所选模型设置为数组:
$scope.category = angular.isDefined($scope.listOfCategory[0]) ?
[$scope.listOfCategory[0]] : [];
请注意,这还会修复以下错误消息:
Error: TypeError: a.forEach is not a function
我遇到了与 'chosen multiple select' 相关的同类问题,出现了 3 次相同的错误。错误日志如下。该解决方案可能会对其他人有所帮助。
TypeError: a.map is not a function
at mh.q.writeValue (angular.js:30513)
at e.$render (angular.js:33327)
at Object.c.$render (angular-chosen.min.js:7)
at angular.js:29306
at m.$digest (angular.js:18253)
at b.$apply (angular.js:18531)
at HTMLButtonElement. (angular.js:27346)
at HTMLButtonElement.dispatch (jquery.min.js:3)
at HTMLButtonElement.q.handle (jquery.min.js:3)
为了绕过这个问题,我维护了 2 个变量,一个用于模型变量,另一个用于保存变量。例如
在控制器中,
$scope.x = {
draftVar: []
};
$scope.save = function(){
$scope.x.savingVar = $scope.x.draftVar.join(',');
save();
}
<select ng-model="x.draftVar" chosen multiple chosen-updater ng-options="xx.id as xx.name for xx in XXs">
<option value=""></option>
</select>
我在执行 AngularJS 选择的指令时遇到以下错误。
Error: TypeError: a.map is not a function at nh.q.writeValue (angularjslatest.js:307) at Object.e.$render (angularjslatest.js:328) at angularjslatest.js:310 at angularjslatest.js:146 at m.$digest (angularjslatest.js:147) at m.$apply (angularjslatest.js:150) at l (angularjslatest.js:102) at XMLHttpRequest.s.onload (angularjslatest.js:108)
我在下面解释我的代码:
<select chosen
multiple
class="form-control oditek-form"
name="category"
id="category"
ng-model="category"
ng-options="s.value as s.name for s in listOfCategory">
</select>
我的控制器代码如下。
$scope.listOfCategory = [{
name: 'Select Category',
value: ''
}];
$scope.category = $scope.listOfCategory[0];
var fileURL = '';
var url1 = '../service/admin/vechile/service/service.php?action=getAllCategoryData';
var method = 'GET';
var data1 = '';
DataService.connectToServerSideScript(method, url1, data1).then(function(response) {
if (response.length > 0) {
angular.forEach(response, function(obj) {
var cdata = {
'name': obj.category_name,
'value': obj.id
};
$scope.listOfCategory.push(cdata);
})
}
}, function(error) {
});
我在这里获取了所有数据,但这些错误出现在浏览器控制台中。这里我需要清除那些错误。
您需要将所选模型设置为数组:
$scope.category = angular.isDefined($scope.listOfCategory[0]) ?
[$scope.listOfCategory[0]] : [];
请注意,这还会修复以下错误消息:
Error: TypeError: a.forEach is not a function
我遇到了与 'chosen multiple select' 相关的同类问题,出现了 3 次相同的错误。错误日志如下。该解决方案可能会对其他人有所帮助。
TypeError: a.map is not a function
at mh.q.writeValue (angular.js:30513)
at e.$render (angular.js:33327)
at Object.c.$render (angular-chosen.min.js:7)
at angular.js:29306
at m.$digest (angular.js:18253)
at b.$apply (angular.js:18531)
at HTMLButtonElement. (angular.js:27346)
at HTMLButtonElement.dispatch (jquery.min.js:3)
at HTMLButtonElement.q.handle (jquery.min.js:3)
为了绕过这个问题,我维护了 2 个变量,一个用于模型变量,另一个用于保存变量。例如
在控制器中,
$scope.x = {
draftVar: []
};
$scope.save = function(){
$scope.x.savingVar = $scope.x.draftVar.join(',');
save();
}
<select ng-model="x.draftVar" chosen multiple chosen-updater ng-options="xx.id as xx.name for xx in XXs">
<option value=""></option>
</select>