2017-02-17 7 views
0

私はいくつかのテーブル行を持ち、それぞれの行の最後の列には実行できる2つの操作があります。Angular JSのクリックした行のデータを取得する方法

 <div class="embedded-list-table-wrapper embedded-medium migration-status-list-container"> 
      <table class="list-table embedded-list-table no-truncate-td"> 
       <thead> 
        <tr> 
         <th> 
          <a href="#list-table" class="table-sort table-sort-desc"> 
           <span class="table-sort-text">Account Name</span> 
           <span class="table-sort-indicator"></span> 
          </a> 
         </th> 
         <th> 
          <a href="#list-table" class="table-sort table-sort-desc"> 
           <span class="table-sort-text"># Batches Completed</span> 
          </a> 
         </th> 

         <th style="width:123px;">Actions</th> 
        </tr> 
       </thead> 
       <tbody> 
        <tr ng-repeat="item in vm.items | limitTo : vm.pageSize : (vm.currentPage-1)*vm.pageSize"> 
         <td class="table-link"><a class="ng-binding" href="" target="_blank" ng-click="vm.setTenantId($event)">{{item.accountName}}</a></td> 
         <td class="table-text ng-binding">{{item.completedBatches}}</td> 
         <td class="table-input"> 
          <div class="btn-group"> 
           <div class="dropdown"> 
            <div class="cog dropdown-toggle" ng-click="batch.showSettings = !batch.showSettings"></div> 
            <ul class="dropdown-menu visible" ng-show="batch.showSettings"> 
             <li><span class="dropdown-category">Manage</span></li> 
             <li class=""><a href="" ng-click="vm.removeAccount(item.accountName)">Remove from Panel</a></li> 
             <li class=""><a href="#" ng-click="vm.setEncoreLink()">View</a></li> 
            </ul> 
           </div> 
          </div> 
         </td> 
        </tr> 
       </tbody> 
      </table> 
     </div> 

今、この<a>" in Viewボタンはhttps://encore.rackspace.com/accounts/<tenant-id>のようになりますURLに私をリダイレクトします。最初の列の値から渡される$イベントを提供

  vm.setEncoreLink = function($event){ 
       debugger; 
       var tenant_id_text = $event.currentTarget.text; 
       var tenant_id = tenant_id_text.substring(tenant_id_text.lastIndexOf("#")+1,tenant_id_text.lastIndexOf(")")); 
       var encoreUrl = "https://encore.rackspace.com/accounts/"+tenant_id; 
       $window.location.href=encoreUrl; 
      } 

<tenant-id>は、最初の列から、私たちのようなものを分割することができますAccount Name値を来ります。 それにアクセスして、それを渡してtenant_idにアクセスできるようにするには? 他の方法がありますか?

+0

なります。だから、あなただけのこの操作を行うことができますことを考えると

あなたのスコープ内でどこからテナントIDが始まるのですか?レンダリングしているアイテムにありますか? – Paul

+0

@PaulテナントIDはありません。最初の列の値から派生させなければなりません。関数に渡すことができる最初の列の値のテキストを得ることができれば、分割してそれに応じて取得することができます。 – StrugglingCoder

+1

なぜ 'item'を' setEncoreLink'メソッドに渡すだけで、 '$ event'で狂ったことをやろうとしてもなく、そのプロパティに直接アクセスできますか?ところで、あなたは '$ event'をビューから渡さないので、' setEncoreLink'メソッドでは常に 'undefined'になります。 – Lex

答えて

2

あなたが派生しようとしているテキストが実際には{{item.accountName}} 'であるように見えますか?また、実際には明示的ではありませんでしたが、サンプルコードからは、setEncoreLink関数を実行しようとしていると仮定しています。

<li class=""><a href="#" ng-click="vm.setEncoreLink(item)">View</a></li>

そして、あなたの関数は、私は少し混乱している

vm.setEncoreLink = function(item){ 
       debugger; 
       var tenant_id_text = item.accountName; 
       var tenant_id = tenant_id_text.substring(tenant_id_text.lastIndexOf("#")+1,tenant_id_text.lastIndexOf(")")); 
       var encoreUrl = "https://encore.rackspace.com/accounts/"+tenant_id; 
       $window.location.href=encoreUrl; 
      } 
関連する問題