2017-01-16 14 views
0

以下は私のHTMLコードです。

<div class="container" ng-app="mintcart"> 
    <div class="panel panel-default" ng-controller="categoriesctrl"> 
    <input type="hidden" ng-model="session.sid" value="<?php echo session_id();?>"/> 
     <div class="panel-body"> 
      <div class="row"> 
       <ul class="nav nav-pills"> 
        <?php 
        $i = 0; 
        while($i < count($list)){ 
         $name = $list[$i]['categoryName']; 
         $id = $list[$i]['id']; 
         $normalUrl = $list[$i]['normalImageUrl']; 
         $hoverUrl = $list[$i]['hoverImageUrl']; 
         if($i == 0){ 
          echo "<li role='presentation' class='active' ng-click='loadproducts($id)'><a href='#' >$name</a></li>"; 
         } else { 
          echo "<li role='presentation' ng-click='loadproducts($id)'><a href='#''>$name</a></li>"; 
         } 
         $i++; 
        } 
        ?> 
       </ul> 
      </div> 
     </div> 
    </div> 
</div> 

以下は私のJSコードです。

var app = angular.module('mintcart',[]); 

app.controller('categoriesctrl', function($scope, $http){ 
    var auth = {}; 
    $http({ 
     method: 'GET', 
     url: baseurl + 'api/get_product_categories' 
    }).then(function successCallback(response) { 
     $scope.categories = response.data.categories; 
     // this callback will be called asynchronously 
     // when the response is available 
    }, function errorCallback(response) { 
     // called asynchronously if an error occurs 
     // or server returns response with an error status. 
    }); 

    $scope.loadproducts = function(item_id) { 
     alert($scope.session.sid); 
     $http({ 
      method: 'GET', 
      url: baseurl + 'api/get_items_in_category_cart/' + item_id 
     }).then(function successCallback(response) { 
      $scope.items = response.data.products; 
      // this callback will be called asynchronously 
      // when the response is available 
     }, function errorCallback(response) { 
      // called asynchronously if an error occurs 
      // or server returns response with an error status. 
     }); 
     //$scope.Language = lang; 
    }; 

}); 

loadproducts関数をalert($ scope.session.sid)と呼びます。私に "未定義"を与えます。なぜ私の要素が拾われていないのか分かりません。 何か助けていただければ幸いです。

+0

は、値が割り当てられますし、コントローラ内の変数にアクセスすることができますか? – Sajeetharan

+0

@Sajeetharanはい。します。ソースコードを見ると、セッション値がそこにあります。 –

+0

サーバーの入力に値を設定しています。角はこれを知らない。 Angularに関する限り、$ scope.session.sidは未定義です。 2-wayバインディング(ng-model)を適切に使用するには、要素ではなく$ scopeに値を割り当てる必要があります。 –

答えて

0

phpがサーバー側で動作するため、ビュー上にjavascriptを使用して変数を設定する必要があります。

PHPで返される内容を取得するJavaScriptで変数を作成します。

var sessionid = <?php echo session_id();?> 

そして、あなたは

var app = angular.module("MyApp", []); 

app.controller("categoriesctrl", function($scope) { 
    $scope.session.sid = sessionid ; 
    console.log($scope.session.sid); 
}); 
+0

ありがとうございます。私はPHPの、javascriptと角度の違いの周りに私の頭を取得する必要があるようだ。 –

関連する問題