我怎样才能传递<a> tag form ui-serf to the url in the state provider?</a>的值

时间:2014-11-21 05:00:12

标签: angularjs angular-ui-router

我使用此plunkr来解释我的问题:

在index.html中点击此链接

<li><a ui-sref="route1({test:true})">Route 1</a></li>

转到此链接:http://localhost:3000/#/route1?test=true

我试图找出如何抓住文字&#34;路线1&#34;从链接中将其用作路径中的参数             url:&#34; / route1:?test&#34;,

我希望动态生成网址:url:&#34; / route1:Route 1&#34;

1 个答案:

答案 0 :(得分:0)

有几种方法可以让路线名称成为你的州参数的一部分,

  1. 您可以将其作为州的一部分(例如/:routename/?test,您可以将其作为州定义的解析属性的一部分 see here
  2. 您可以将其附加到路线中 - 但是,正如您在示例中所说的那样,您的文字Route 1未绑定到范围或甚至放入角度,因此您需要 at the very最少将其添加到范围内 - 使用任一把手(即{{ routeName }}并在控制器中设置值)或将值映射到某处的配置中并将其注入控制器。
  3. 我认为如果你想依赖它,就像你可以依赖URL params一样,我建议你看一下路由定义中的resolve对象,因为它似乎就是你要找的东西。 / p>

    您需要在解析图之外定义实际文本,并且可能创建一个从配置模块返回值的函数,这样您也可以将值绑定到导航栏链接。

    $stateProvider
        .state('route1', {
            url: "/route1?test",
            templateUrl: "route1.html",
            resolve: {
                 activeRoute: function () {
                     //you could have a config map that you inject into this module
                     //or have it be a set property
                     return myConfigMap['route1'];
                 }
            }
        })
          [...]
    
    1. 您可以使用自定义数据 see here ,然后可以在您的控制器中以这样的方式访问:

      console.log($state.current.data.customData1);
      
    2. 无论以何种方式定义它,如果您想要真正动态生成url,您可能需要构建一个可以根据定义该特定状态的参数列表构建状态定义的函数。