Javascript 角路由提供器和编码器组件
我刚刚遇到了一个棘手的情况:我使用一个有角度的ui网格来显示客户机名称列表。Id列将用作指向客户端详细视图的链接。它包含一个Javascript 角路由提供器和编码器组件,javascript,angularjs,route-provider,Javascript,Angularjs,Route Provider,我刚刚遇到了一个棘手的情况:我使用一个有角度的ui网格来显示客户机名称列表。Id列将用作指向客户端详细视图的链接。它包含一个 我不明白为什么会发生这种情况。在无效的url命中上角度重定向到主页,因为在routeProvider中您指定了“否则”子句。如果指定的url都不匹配,则routeProvider nagivate为默认url,在您的情况下为/home.Yes,当然,这是otherwise子句的预期功能。我不明白的是,$routeProvider为什么使用未编码的URL,而不是href属
我不明白为什么会发生这种情况。在无效的url命中上角度重定向到主页,因为在routeProvider中您指定了“否则”子句。如果指定的url都不匹配,则routeProvider nagivate为默认url,在您的情况下为/home.Yes,当然,这是otherwise子句的预期功能。我不明白的是,$routeProvider为什么使用未编码的URL,而不是href属性中的URL。我很确定您的浏览器正在为您解码该URL,然后它才会出现。你想过Base64编码吗?也许使用过滤器进行双重URL编码?
$scope.cellTemplate = function(url) {
var s = '<div class="{{' + isRowInactive() + ' ? \'ui-grid-cell-contents strikethru\' : \'ui-grid-cell-contents\'}}" ng-class="col.colIndex()">' + '<span >';
if (url)
s += '<a ng-href="#/client/{{ row.entity.id | encodeURIComponent }}">';
s += '{{ grid.getCellValue(row, col) }}';
if (url)
s += '</a>';
s += '</span></div>';
return s;
};
angular.module('rcoc.filters', [])
.filter('encodeURIComponent', function() {
return window.encodeURIComponent;
});
app.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/home', { templateUrl: 'partials/home.html', controller: 'HomeCtrl' }).
when('/client/:id', { templateUrl: 'partials/client-detail.html', controller: 'ClientDetailCtrl', title: 'client' }).
otherwise({ redirectTo: '/home' });
}]);
<a class=ng-binding ng-href="#/client/Customer%20(AMS%40ITM%2FH)" href="#/client/Customer%20(AMS%40ITM%2FH)">Customer (AMS@ITM/H)</a>