【问题标题】:How to use ui-sref on clicking of div tag in Angularjs?如何在Angularjs中单击div标签时使用ui-sref?
【发布时间】:2017-04-28 16:20:18
【问题描述】:

我正在开发 Angularjs SPA 应用程序。我有一个 div 标签,我在其中使用 ng-repeat 绑定了一些细节,如下所示。

<div class="grid-container">
    <div class="grid" ng-repeat="car in carDetails">
        <img class="car" src="{{car.WebImageURL}}">
        <div class="car-name">{{car.make}}<span class="make">{{car.model}}</span></div>
        <div class="car-des">lorem ipsum dolor sit amet,</div>
        <div class="car-price">{{car.Price}} <span class="sar">{{car.style}}</span></div>
    </div>
</div>

点击 div 标签(带有 class="grid-container")我想重定向到新状态。那么如何使用 ui-sref 和 ng-click 呢?我对此有点困惑。有人可以在这方面帮助我吗?谢谢。

【问题讨论】:

  • 我明白了,但我的问题是如何让 div 可点击?

标签: javascript angularjs angular-ui-router


【解决方案1】:

你可以试试下面的代码,

<div class="grid-container">
    <div class="grid" ng-repeat="car in carDetails">
        <img class="car" src="{{car.WebImageURL}}">
        <a ui-sref="MainPageRoute.SubPage1Route({name: car.make})"><div class="car-name">{{car.make}}<span class="make">{{car.model}}</span></div></a>
        <a ui-sref="MainPageRoute.SubPage2Route({des: car.desc})"><div class="car-des">lorem ipsum dolor sit amet,</div></a>
        <a ui-sref="MainPageRoute.SubPage3Route({price: car.Price})"><div class="car-price">{{car.Price}} <span class="sar">{{car.style}}</span></div></a>
    </div>
</div>
<ui-view></ui-view>

路由文件应该是这样的:

$stateProvider.state('MainPageRoute', {
    url: "/MainPage",
    templateUrl: "templates/main-template.html",
    controller: 'main-ctrl'
});

$stateProvider.state('MainPageRoute.SubPage1Route', {
    url: "/SubPage1/:name",
    templateUrl: "templates/sub-page1-template.html",
    controller: 'sub-page1-ctrl'
});

$stateProvider.state('MainPageRoute.SubPage2Route', {
    url: "/SubPage2/:des",
    templateUrl: "templates/sub-page2-template.html",
    controller: 'sub-page2-ctrl'
});

$stateProvider.state('MainPageRoute.SubPage3Route', {
    url: "/SubPage3/:price",
    templateUrl: "templates/sub-page3-template.html",
    controller: 'sub-page3-ctrl'
});

【讨论】:

  • 谢谢。但是我可以在哪里包含参数?
  • @NiranjanGodbole 我已经用参数更新了我的答案。请检查并通过评论告诉我。
【解决方案2】:

像这样向你的控制器添加一个 goto 函数:

$scope.goto = function(sref) {
    $state.go(sref);
}

然后通过 ng-click 调用你的函数:

<div class="car-name" ng-click="goto('ui-sref')">
     {{car.make}}
     <span class="make">{{car.model}}</span>
</div>

【讨论】:

  • 谢谢。如果我想发送一些参数,那么我该如何传递?
  • 如果您想添加额外的参数,您可以在 $state.go(sref); 处更改 faebzz 的代码;行
  • ng-click="goto('CarDetails{CarID: 10}') 这行不通?
  • 如果goto函数中有额外的逻辑,最好使用这种样式,否则最好在元素上使用ui-sref
猜你喜欢
  • 2019-03-22
  • 2015-10-30
  • 1970-01-01
  • 2016-11-30
  • 2015-10-16
  • 2016-11-01
  • 2015-01-23
  • 2015-01-02
  • 2014-06-09
相关资源
最近更新 更多