【问题标题】:How to make href in button inside collapse如何在折叠内的按钮中制作href
【发布时间】:2017-10-11 10:46:00
【问题描述】:

我有一个显示更多客户信息的折叠模型,在里面,我有一个按钮,当我点击时,我没有得到特定客户的信息,我得到所有客户的数据

<ion-list ng-repeat="x in names">
    <a class="item  item-icon-left " >
                <i class="icon ion-android-arrow-dropdown-circle" ng-model="collapsed" ng-click="collapsed=!collapsed"></i>
                {{x.Marque}}   
              </a>
              <div ng-show="collapsed">
                    <table>
                          <thead >
                             <td>   
                                 <label> Code:  </label> {{x.CodeClient}}    <br/> 
                                 <label> Nom:   </label> {{x.NomClient}}     <br/> 
                                <a class="button button-info" ui-sref="modifClient({CodeClient: x})" >
                                Enregistrer
                                </a> 
        ...

app.js

     $stateProvider.state('modifClient', {
                    url: '/modifClient',
                    templateUrl: 'templates/modifClient.html',
                    params: {CodeClient: null},
                    controller: 'ConsultClientCtrl' 
                });
app.controller("ConsultClientCtrl", function($scope, $http) {
$scope.loadClient = function(){ 
           $http.get("http://localhost/deb/debut.php")  
           .success(function(data){  
                $scope.names = data; 
           });  
   }

});

modifClient.html

<ion-content class="padding" ng-controller="ConsultClientCtrl" ng-repeat="x in names | filter: {CodeClient: thisX}" >

  <ion-list ng-repeat="x in names | filter: {CodeClient: thisX}: true">

      <div class="item item-divider center-text" ng-model="CodeClient"> {{x.CodeClient}} </div>
......

【问题讨论】:

  • 您能分享您的控制器代码吗?您使用的是 Angular 路由器吗?
  • $stateProvider.state('modifClient', { url: '/modifClient', templateUrl: 'templates/modifClient.html', 控制器: 'ConsultClientCtrl' });
  • 只需将其作为编辑发布到您的问题。
  • 这个按钮在我把它放在其他视图中时可以工作,但是当我把它放在这个折叠时它不起作用
  • 完成了,我从中获取 ng-repeat 值的函数工作正常,因为我在其他视图中使用它。谢谢

标签: javascript html angularjs ionic-framework angular-ui-router


【解决方案1】:

你必须使用框架的href:ngHrefng-click

<a class="button button-info" ng-href="/modifClient"> ...

LE:我为这个案例创建了一个pen。问题是您在&lt;a&gt; 中有一个&lt;a&gt;,当您单击它时,它会感到困惑。

所以我已将&lt;a ng-show="collapsed"&gt; 更改为&lt;div ng-show="collapsed"&gt;,现在可以按预期工作(也请参阅笔)。

【讨论】:

  • 是的,我试过了,但还是不行,我也试着放了 但它不起作用,看来这次崩溃中的一切都没有'不工作
  • 是的,它有效,当我点击时我可以看到更多信息
  • 是的,你是对的,我改了,我不得不把 /modifClient 改成 modifClient,但是如果我想要这个 "modifClient/{{x.CodeClient}} 怎么办?请
  • 试试&lt;a class="button button-info" ng-href="modifClient/{{x.CodeClient}}"&gt; ...,我想我回答了你的原始问题。
  • 谢谢埃德温! ng-href 和 div 是解决我问题的诀窍。谢谢
【解决方案2】:

如果您使用Angular ui-router 并且modifClient 是路由器中的一个状态,则最好使用Angular ui-sref 属性而不是HTML href

你的代码是:

<a class="button button-info" ui-sref="modifClient">

编辑:

如果你想在ui-sref 中传递一个对象参数,你可以这样做:

<a class="button button-info" ui-sref="modifClient({CodeClient: x.CodeClient})">

并更改您的 state 设置以包含 params 对象:

$stateProvider.state('modifClient', {
     url: '/modifClient',
     templateUrl: 'templates/modifClient.html',
     params: {CodeClient: null},
     controller: 'ConsultClientCtrl' 
});

注意:

请注意,您还应该使用$scope.CodeClient 变量更新您的ConsultClientCtrl 控制器,以便可以从ui-sref 更新它。

您可以阅读 How to pass parameters using ui-sref in ui-router to controller 了解更多选项。


编辑 2:

阅读您的上一个编辑后,我可以看到您的控制器中没有 CodeClient 变量,因此请像这样更新它:

app.controller("ConsultClientCtrl", function($scope, $http) {
    $scope.CodeClient = null;
    $scope.loadClient = function(){ 
       $http.get("http://localhost/deb/debut.php")  
       .success(function(data){  
            $scope.names = data; 
       });  
   }
});

在你的 HTML 中使用:

<div class="item item-divider center-text"> {{CodeClient}} </div>

没有&lt;ion-list ng-repeat ...&gt;filter 部分,因为我们已经在控制器中获得了CodeClient 变量。

【讨论】:

【解决方案3】:

谢谢大家,这是我找到的解决方案:

更改按钮的代码:

<a class="button button-info" ng-href="#/modifClient/{{x.CodeClient}}" >
Enregistrer </a> 

在 app.js 中,我不得不使用 $state:

app.controller("ConsultClientCtrl", function($scope, $http,$state) {

        $scope.loadClient = function(){ 
              $http.get("http://localhost/deb/selectClient.php")  
           .success(function(data){  
                $scope.thisX   = $state.params.CodeClient; 
                $scope.names = data;  
           });
         }             
});

并将状态提供者更改为:

$stateProvider.state('modifClient', {
            url: '/modifClient/:CodeClient',
            templateUrl: 'templates/modifClient.html',
            controller: 'ConsultClientCtrl' 
        });

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签