ui-sref没有正常工作

时间:2014-07-24 08:51:15

标签: ruby-on-rails angularjs angular-ui angular-ui-router

我有一个非常基本的angularjs应用程序,使用ui-routerstateProvider定义如下:

$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.3ui-router 0.2.10

1 个答案:

答案 0 :(得分:0)

似乎它通过相对网址查找模板。您的网址中没有“#”,不是吗?

尝试为模板定义绝对网址,例如templateUrl: '/partials/products/detail.html'