嗨,我是棱角分明的新手..
我在尝试实施电视指南网站时遇到了一些问题。我在application.js文件中实现了promise
。
这是application.js
.when('/programme/:programmename', { //Url rewriting
templateUrl:"programme/info.html" ,
resolve: {
programmeid: function (userAPI, $q, $route,$rootScope) {
var deferred = $q.defer();
var url = $route.current.params.programmename;
url = url.replace(/-/g, ' ') ;
userAPI.getProgrammeid({ programmename: url }, function (r) {
deferred.resolve($rootScope.Programmeid= r.getprogrammeidbyname.programmeidbyname.programmeid);
// now promise
});
return deferred.promise;
}
}
})
.when('/channel/:channelname', { //Url rewriting
templateUrl:"channels/details.html" ,
resolve: {
channelid: function (userAPI, $q, $route,$rootScope) {
var deferred = $q.defer();
var url = $route.current.params.channelname;
url = url.replace(/-/g, ' ') ;
userAPI.getChannelid({ channelname: url }, function (r) {
console.log("this**********************")
console.log(r)
deferred.resolve($rootScope.Channelid= r.getsinglechannelidbyname.singlechannelidbyname.channelid);
// now promise is resolved,
});
return deferred.promise;
}
}
})
.otherwise({
redirectTo:'/home'
});
我正在实施/#!/programme/programmename.
所以我在大多数情况下都获得了例如程序/ The-Big-Bang-Theory
的网址我得到的问题是程序名称中存在斜线,例如:-Premier League 2013/14它会重定向到主页,或者即使网址中有短划线,例如: - 暴露的真相 - 外星人我得到真相暴露---外星人并且收到错误(没有找到网址)或getprogrammeidbyname=null is not defined
请帮我解决这个问题。谢谢。
答案 0 :(得分:0)
您可以在路线中使用*
进行匹配:
.when('/programme/:programmename*', {
的api文档
path可以包含以冒号开头并以星号(:name *)结尾的命名组。当路线匹配时,所有字符都急切地存储在给定名称下的$ routeParams中。
答案 1 :(得分:0)
你可以使用encodeURIComponent()对程序名进行编码,然后再传入吗?