angular-ui-router插件提供了“嵌套作用域等规则”等有用的特性,但是它的最后一个版本存在一个严重的问题:不能正确加载templateUrl指定的文件。其实这是一个低级错误导致的:
this.fromUrl = function (url, params) {
if (isFunction(url)) url = url(params);
if (url == null) return null;
else return $http.get(url, {
cache: $templateCache
}).then(function (response) {
return response.data;
});
};
其中的关键问题出在这句:
$http.get(url, { cache: $templateCache })
他错误的调用了$http.get,因为第二个参数是传给服务器的url params,而cache等选项应该出现在第三个参数中!所以,把这句话改为
$http.get(url, {}, { cache: $templateCache })
就可以了。