我有一个非常基本的angularjs应用程序,使用ui-router
。 stateProvider
定义如下:
$stateProvider
.state 'home',
url: '/'
.state 'products',
abstract: true
url: '/products'
templateUrl: 'partials/products/products.html'
resolve: {
productsResource: 'Product'
data: (productsResource) ->
return productsResource.all().$promise
}
controller: ($scope, data) ->
$scope.products = data.products
$scope.pagination = data.pagination
.state 'products.list',
url: '/page/{pageNum:[0-9]{1,4}}'
templateUrl: 'partials/products/products.list.html'
.state 'products.detail',
url: '/{productId:[0-9]{1,10}}'
templateUrl: 'partials/products/detail.html'
这是coffescript
,因为后端位于rails
。
home
状态正确加载,我有以下代码:
<h2>Products</h2>
<a ui-sref="products.list({pageNum: 1})" class="btn btn-primary">See All</a>
products.list
状态正确加载。问题是当我尝试达到状态products.details
(inside products.list.html)
<a class="btn btn-xs" ui-sref="products.detail({ productId:product.id })"><i class="fa fa-bars"></i> Detail </a>
ui-sref
生成的链接似乎正确:href=/products/3621
,但是它要求:http://localhost:3000/products/page/partials/products/detail.html
中的文件,我不明白这种行为。
为什么会这样?我该如何解决?
(我正在使用angular 1.3
和ui-router 0.2.10
)
答案 0 :(得分:0)
似乎它通过相对网址查找模板。您的网址中没有“#”,不是吗?
尝试为模板定义绝对网址,例如templateUrl: '/partials/products/detail.html'