2016-09-15 1 views
0

anglejsを使用して異なるページのコントローラ間で値を渡しています。 これは私のapp.jsの一部ですjstlでのanglejs値の比較の問題

app.controller('JewelleryCtrl', function($scope, srvShareData) { 
     $scope.sharedData = srvShareData.getData(); 
     sessionStorage.clear(); 
    }); 

と私は私の場合には、次のページ

{{sharedData}} 

にこの{{sharedData}}は値が含まれている「指輪」を渡された値を取得することができますよ。 jstlでこの値を比較したいが、動作していない。これは私が試みていることです。

<div ng-controller="JewelleryCtrl" class="ui-tabs-panel ui-tabs-hide ui-widget-content ui-corner-bottom" id="fragment-2"> 


    <%  
     String subcat1 = "{{sharedData}}"; 
     request.setAttribute("subcat", subcat1); 
    %> 

    <!--<h4>Address</h4>--> 
<div class="sell" onsubmit="return false"> 
    <c:set var="subcategory" value="${subcat}" scope="session"/> 
    <c:out value="${subcategory}"></c:out> 
    <c:choose> 
     <c:when test="${subcategory == 'Rings'}"> 
    <div class="col-3"> 
     <label> 
      <select id="basemodel" name="sizeofring" tabindex="5"> 
       <option value="" selected="">Select Ring Size</option> 
       <option value="1">1</option> 
       <option value="2">2</option> 
       <option value="3">3</option> 
      </select> 
     </label></c:when> 
     </c:choose> 
    </div> 

この比較は常に失敗します。 {{sharedData}}を文字列に変換して比較していますか?私はそれをする方法を知らない。

+0

これは既に文字列です。 –

答えて

0

キーは、どこと各コードが実行される実現することである - JSPページが要求され、レンダリングされているサーバー上(つまり前に応答がブラウザに送信される)とJavaScript(すなわちブラウザのの後にのブラウザがを受信しました。の応答が返されました。

Angularが引き継ぐときには、の属性はありません.(セッションIDクッキーだけ)などはありません。したがって、JSPの値をAngular 、それをレンダリングする必要があります。それにはさまざまなアプローチがありますが、あなたのニーズに応じて最適な方法があります。たとえば、

<div id="subcat" data-subcat="<%= subcat1 %>" style="display: none"></div> 

、次いでdata-subcat属性の値を読み取る、またはグローバルJS変数

<script> 
var subcatGlobal = '<%= subcat1 %>'; 
</script> 

として設定し、それを直接使用します。その他のオプションはほとんどありません。もしあなたがgoogleのpass jsp variable angularであれば、多くの有用な結果が得られます(その多くはここを指しています)。