【问题标题】:Attach a parameter from Angular after a path in window.location在 window.location 中的路径之后附加来自 Angular 的参数
【发布时间】:2017-05-09 21:33:49
【问题描述】:

我有一个使用 Angular 脚本显示动态表格的 html 文件:

<h2 class="sub-header" style="color:#4e67c3;">Elenco macchinette</h2>
          <div class="table-responsive">
            <table id="thetable">
                
             
                <tr> 
                    <th class="th2">Id</th> 
                    <th class="th2">Data Creazione</th>  
                    <th class="th2">Categoria</th>  
                    <th class="th2">Capacità</th>  
                    <th class="th2">Area geografica</th>  
                    <th class="th2">&nbsp;&nbsp;Attivo&nbsp;&nbsp;</th>  
                    
             </tr> 
             
              
      
                
                <tr ng-repeat="dispensercategory in dispensercategories">  
                 
          
            <td onclick="window.location='#showemp/{{ dispensercategory.dispenser.iddispenser }}'"> {{ dispensercategory.dispenser.iddispenser }}</td>  
            <td> {{ dispensercategory.dispenser.creationDate }}</td>
            <td> {{ dispensercategory.category.description }}</td>  
            <td> {{ dispensercategory.dispenser.capacity.type }}</td>  
            <td> {{ dispensercategory.dispenser.geoArea.city }}</td>  
            <td> {{ dispensercategory.dispenser.stateOn }}</td>  
    

            </tr>  
          
            </table>
              
              
    <h2 class="sub-header" style="color:#4e67c3;">Dipendenti macchinette</h2>
          <div class="table-responsive">
            <table id="thetable">
                
             
                <tr> 
                    <th class="th2">Nome</th> 
                    <th class="th2">Cognome</th>  
                    <th class="th2">Data di nascita</th>  
                    <th class="th2">Telefono</th>  
                    <th class="th2">Id macchinetta</th>   
                    
             </tr> 
             
              
      
                
                <tr ng-repeat="staffdispenser in staffdispensers">  
                 
          
            <td onclick="window.location='#/showemp'"> {{ staffdispenser.staff.name }}</td>  
            <td> {{ staffdispenser.staff.surname }}</td>
            <td> {{ staffdispenser.staff.birthDate }}</td>  
            <td> {{ staffdispenser.staff.phone }}</td>  
            <td> {{ staffdispenser.dispenser.iddispenser }}</td>   
    

            </tr>  
          
            </table>
              
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.js"></script> 
    <script src="scripts/rest-services.js"></script>
    <script src="scripts/main-admin.js"></script>
 
    <script src="scripts/jquery.js"></script>
    <script src="bootstrap-3.3.7-dist/js/bootstrap.js"></script>
    <script src="scripts/angular.js"></script>

    <script type="application/javascript"></script>

我想在这一行附加一个参数:

<td onclick="window.location='#showemp/{{ dispensercategory.dispenser.iddispenser }}'"> {{ dispensercategory.dispenser.iddispenser }}</td> 

我想将{{ dispensercategory.dispenser.iddispenser }} 的值附加到网址#showemp/。但是这样它并没有读取Angular变量的值,而是读取了url这样一个唯一的字符串:

http://localhost:8080/FoodDrinkDispener/fddWebapp/fixed_admin.html#/showemp/%7B%7B%20dispensercategory.dispenser.iddispenser%20%7D%7D

看这个:

当我点击“1”的单元格时,我想转到“#/showemp1”。 我该如何解决?

【问题讨论】:

  • 你为什么不用ng-click
  • 你可以使用$location服务代替window.location$location.path('#showemp/').search({your param: 'dispensercategory.dispenser.iddispenser'});
  • 嗯,我不知道存在。我可以在不调用脚本的情况下将其用于 html 文件?
  • 是的,试试insideng-click="$location.path('#showemp/').search({your param: 'dispensercategory.dispenser.iddispenser'});"

标签: javascript angularjs parameters href window.location


【解决方案1】:

您可以使用ng-href 指令,并执行以下操作:

<td>
    <a ng-href="#showemp/{{ dispensercategory.dispenser.iddispenser }}"> {{ dispensercategory.dispenser.iddispenser }} </a>
</td>

【讨论】:

  • 它有效,但我更喜欢允许点击单元格,而不仅仅是文本
【解决方案2】:

使用$location service 而不是window.location 这可以通过几种方式实现

ng-click="$location.path('#showemp/').search({your param: 'dispensercategory.dispenser.iddispenser'});"

或使用

 ng-click="$location.path('#showemp/'+{{dispensercategory.dispenser.iddispenser}})"

在控制器中

yourApp.controller('myController', function($scope, $location){
    $scope.changePath= function(param){
        $location.url('/#showemp/'+param);
        //optional use if not work $scope.$apply();
    };
});

在 HTML 中

ng-click="changePath(dispensercategory.dispenser.iddispenser)"

【讨论】:

  • 如果我使用:也许我需要在js文件中导入一些函数?
  • 无需导入与 angularjs 捆绑的外部 js 文件。试试这个然后ng-click="$location.path('/#showemp/'+ {{dispensercategory.dispenser.iddispenser);" 注意:我的代码中可能存在语法错误。
  • 出错:错误:[$parse:syntax] 语法错误:表达式 [$location.path('#showemp/'+{{dispensercategory) 的第 29 列中的标记 '{' 无效键.dispenser.iddispenser }})] 从 [{dispensercategory.dispenser.iddispenser }})] 开始。 errors.angularjs.org/1.4.8/$parse/…ng-click="$location.path('#showemp/'+{{dispensercategory.dispenser.iddispenser }})">howemp%2F'%2B%7B%7B%dispensercategory.dispenser.iddispenser%20% 7D%7D)&p4=%7B%dispensercategory.dispenser.iddispenser%20%7D%7D)
  • 我也使用这个页面的回复:stackoverflow.com/questions/15215219/… 但是什么也没发生,在这种情况下是零错误
  • 或使用ng-click="$location.url('/#showemp/' + {{ dispensercategory.dispenser.iddispenser }});"
猜你喜欢
相关资源
最近更新 更多
热门标签