Директива AngularJS 1.0.7 в html5Mode и AngularStrap bs-select перенаправляет на индекс
У меня есть и веб-приложение AngularJS 1.0.7, и я использую директиву выбора AngularStrap. Все работало нормально, пока я не переместил свое приложение в html5Mode. Я сделал это, чтобы украсить мои URL.
Но теперь, когда я выбираю опцию в любом компоненте bs-select, меня перенаправляют на индекс.
HTML
<select class="show-tick" ng-model="selectType" ng-options="boatType as (boatType.name | translate) for boatType in boatTypes" bs-select>
<option value="" selected>{{'BOAT_TYPE' | translate}}</option>
</select>
JS Controller:
$scope.$watch('selectType', function() {
if($scope.selectType != undefined) {
BoatModel.query({type_id: $scope.selectType.id},
function success(result){
if(result.length == 0){
$scope.boatModels = new Array ();
$scope.selectModel = undefined;
SearcherService.setModel(undefined);
}
else{
$scope.boatModels = result.slice();
}
}
);
SearcherService.setType($scope.selectType.id);
$scope.selectModel = undefined;
}
else {
SearcherService.setType(undefined);
$scope.selectModel = undefined;
}
});
1 ответ
Решение
Я починил это.
Я обнаружил, что код, сгенерированный директивой Bootstrap Select, не совместим с html5Mode, потому что он вставил href="#" в каждую опцию в select. Когда вы нажимаете на нее, вы перенаправлены на указатель.
Оригинальный код в директиве
createA:function(test, classes) {
return '<a tabindex="-1" href="#" class="'+classes+'">' +
'<span class="pull-left">' + test + '</span>' +
'<i class="icon-ok check-mark"></i>' +
'</a>';
Я просто исправил это, удалив href, вот так:
createA:function(test, classes) {
return '<a tabindex="-1" class="'+classes+'">' +
'<span class="pull-left">' + test + '</span>' +
'<i class="icon-ok check-mark"></i>' +
'</a>';