2017-09-05 6 views
1

こんにちは私は以下の問題を抱えています。 以下は以下の私のcontroller.js以下 ui-routerでターゲット '_blank'を使用すると未定義になる

app.controller("DataController", function($scope, DataService) { 
    $scope.datalist=DataService.getData(); 
    $scope.getnre=function(ndnd,dnd,land,email) { 
    $scope.numsem = { 
     ndnds : ndnd, 
     dnds : dnd, 
     lands : land, 
     emails : email 
    } 
    } 
}); 

内のコードは、私が非を表示しています。ここ

<div class="content" ng-controller="DataController"> 
    <table class="table table-striped"> 
     <thead> 
      <th>Non-DND's</th> 
     </thead> 
     <tbody> 
      <tr ng-repeat="ndnd in numsems.ndnds"> 
       <td>{{ndnd}}</td> 
      </tr> 
     </tbody> 
     </table> 
</div> 

numsdetails.htmlがされている私のhtmlページ

<div class="content" ng-controller="DataController"> 
    <table class="table table-striped" id="show" ng-if="datalist.length>0"> 
     <thead> 
      <th>State</th> 
      <th>District</th> 
      <th>Non-DND's</th> 
     </thead> 
     <tbody> 
      <tr dir-paginate="data in datalist| filter:search|orderBy:sortKey:reverse|itemsPerPage:10" style="cursor:pointer;"> 
      <td>{{data.state}}</td> 
      <td>{{data.district}}</td> 
      <td><a ng-click="getnre(data.nondnd,data.dnd,data.land,data.email)" ui-sref="numsemailsdata" target="_blank">{{data.nondnd.length}}</a></td> 
      </tr> 
     </tbody> 
    </table> 
    <dir-pagination-controls max-size="10" direction-links="true" boundary-links="true" style="float:right" ng-if="datalist.length>0"> 
    </dir-pagination-controls> 
</div> 

です私の最初のhtmlページのdndのカウントと私はnumsemails.htmlである新しいタブで非dndを表示する必要があります 私はnumsemails.htmlにデータをバインドしようとしているとき、私は私は同じコントローラからのデータをバインドしています。

解決策を教えてください。

+0

あなたは –

+0

@Doug E新鮮な $ stateProvider.state( "numsemailsdata"、 { URLあなたのUIルータの定義を表示してくださいすることができ: "/ NumsEmails"、 templateUrl:「パーシャル/ numsemails。 html " }); –

答えて

2

新しいページを開いたとき(空白)あなたは全体の新しいインスタンスを作成しますので、あなたがnumsems未定義なっている理由は、あなたのアプリのこれは初めてページを読み込むようなものです。これはまったく異なるブラウザインスタンスと考えることができます。 stateparamsを使用してパラメータを渡すことができますが、これはurlに渡されますが、オブジェクト全体を渡そうとしているため、少し難しくなります。

問題には複数の解決策があります。 URLにいくつかのデータを渡すことも、localstorage、$ window、またはcookiesを使用してデータを格納することもできます。私は他の解決策もあると確信しています。これらの方法の1つを選択してデータを正しく渡すと、そのデータを手助けすることができます。

この問題は他のスレッドで議論されています。

ui-router: open state in new tab with target=“_blank” with object params

+0

お返事ありがとうございます。最後に、私はlocalStorageを使用しました。また、stateParamsを使って試しました。しかし、私は期待できませんでした。 localStorageを使用するよりも優れたソリューションを探しています。 –

0

お使いのコントローラのコードが間違っている、あなたは括弧と中括弧が欠落している:

app.controller("DataController", function($scope) { 
    $scope.datalist = DataService.getData(); 
    $scope.getnre = function(ndnd,dnd,land,email) { 
    $scope.numsem = { 
     ndnds : ndnd, 
     dnds : dnd, 
     lands : land, 
     emails : email 
    }; 
    } 
}); 
+0

ちょうどタイプミス。私はちょうどそれを編集しました。 –

関連する問題