PrestaShopモジュールの作成

How to add an optional variable to fn in $interval service on AngularJS.

AngularJSの$intervalサービス内で指定した関数に変数を受け渡すには
$interval(fn, delay, [count], [invokeApply], [Pass]);
のPassの箇所に受け渡す変数を記述します。
その他オプション項目[ ]も指定する必要があるようです。
ここでは、テンプレート内のキャンセルURL $cancel_url をスクリプト側に受け渡しています。

PrestaShopSmartyによるテンプレートデザインを導入しているため、テンプレートとスクリプトを以下のように記述します。

テンプレートファイル

ng-init="init({$status},'{$addr}',{$timestamp},'{$base_websocket_url}','{$redirect_link}','{$cancel_url}')"

スクリプトファイル

$scope.tick = function(cancel_url) {
        $scope.clock = $scope.clock-1;
        $scope.progress = Math.floor($scope.clock*totalProgress/totalTime);

        if($scope.progress == 0){
            //Refresh invoice page
            $window.location.href = cancel_url;
        }
    };

    $scope.init = function(invoice_status, invoice_addr, invoice_timestamp, base_websocket_url, final_url, cancel_url){

      if(invoice_status == -1){
        $scope.tick_interval  = $interval($scope.tick, 1000, 0, true, cancel_url);
        var ws = new WebSocket(base_websocket_url);
        ws.onopen = function() {
    			  var data = { "op" : "addr_sub", "addr" : "invoice_addr" };
                var message = JSON.stringify(data);
                ws.send(message);
        }
        ws.onmessage = function (evt) {
            $window.location.href = final_url;
        }
      }
    };

モジュールガイドライン

Module Generator

モジュールの雛形作成