2016-06-10 2 views
0

Функция pay() указана в моем контроллере, но она вызывает ошибку в Chrome. Ошибка: «VM4784: 1 Uncaught ReferenceError: pay не определен»VM4784: 1 Uncaught ReferenceError: pay не определен

Может ли кто-нибудь выявить проблему. Вот мой код:

app.js

// Ionic Starter App 

// angular.module is a global place for creating, registering and retrieving Angular modules 
// 'starter' is the name of this angular module example (also set in a <body> attribute in index.html) 
// the 2nd parameter is an array of 'requires' 
angular.module('starter', ['ionic','ngCordova']) 

.run(function($ionicPlatform) { 
    $ionicPlatform.ready(function() { 



    if(window.cordova && window.cordova.plugins.Keyboard) { 
     // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard 
     // for form inputs) 
     cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true); 

     // Don't remove this line unless you know what you are doing. It stops the viewport 
     // from snapping when text inputs are focused. Ionic handles this internally for 
     // a much nicer keyboard experience. 
     cordova.plugins.Keyboard.disableScroll(true); 
    } 
    if(window.StatusBar) { 
     StatusBar.styleDefault(); 
    } 
    }); 
}) 

.config(function($stateProvider, $urlRouterProvider) { 

    $stateProvider 
    .state('tabs', { 
     url: '/tab', 
     abstract: true, 
     templateUrl: 'templates/tabs.html' 
    }) 
    .state('tabs.home', { 
     url: '/home', 
     views: { 
     'home-tab' : { 
     templateUrl: 'templates/home.html' 
     } 
     } 
    }) 
    .state('tabs.list', { 
     url: '/list', 
     views: { 
     'list-tab' : { 
     templateUrl: 'templates/list.html', 
     controller: 'ListController' 
     } 
     } 
    }) 
    .state('tabs.detail', { 
     url: '/list/:aId', 
     views: { 
     'list-tab' : { 
     templateUrl: 'templates/detail.html', 
     controller: 'ListController' 
     } 
     } 
    }) 

     // if none of the above states are matched, use this as the fallback 
     $urlRouterProvider.otherwise('/tab/home'); 

}) 

.controller('ListController', ['$scope', '$http', '$state','$cordovaBluetoothSerial', function($scope, $http, $state, $cordovaBluetoothSerial) { 
     $http.get('js/aboDATAONLY.json').success(function(data) { 
      $scope.orders = data; 
      $scope.whichorder = $state.params.aId; 
     }); 


      function onPay() { 
     var itemsArr = []; 
     var invoice = {}; 
     var myItems = {}; 
     var myItem = {}; 

     myItem['name'] = "Sphero"; 
     myItem['description'] = "A robotic ball that can be controlled via apps"; 
     myItem['quantity'] = "1.0"; 
     myItem['unitPrice'] = "129.00"; 
     myItem['taxRate'] = '0.0'; 
     myItem['taxName'] = 'Tax'; 
     itemsArr.push(myItem); 
     myItems['item'] = itemsArr; 

     invoice['itemList'] = myItems; 
     invoice['paymentTerms'] = 'DueOnReceipt'; 
     invoice['currencyCode'] = 'GBP'; 
     invoice['discountPercent'] = '0'; 
     invoice['merchantEmail'] = '[email protected]'; 
     invoice['payerEmail'] = '[email protected]'; 

     var returnUrl = 'http://wp1175175.wp220.webpack.hosteurope.de/speedhack/index.html'; 
     var retUrl = encodeURIComponent(returnUrl + "?{result}?Type={Type}&InvoiceId={InvoiceId}&Tip={Tip}&Email={Email}&TxId={TxId}"); 
     var pphereUrl = "paypalhere://takePayment/?returnUrl={{returnUrl}}&invoice=%7B%22merchantEmail%22%3A%22{{merchantEmails}}%22,%22payerEmail%22%3A%22{{payerEmails}}%22,%22itemList%22%3A%7B%22item%22%3A%5B%7B%22name%22%3A%22{{name}}%22,%22description%22%3A%22{{description}}%22,%22quantity%22%3A%221.0%22,%22unitPrice%22%3A%22{{price}}%22,%22taxName%22%3A%22Tax%22,%22taxRate%22%3A%220.0%22%7D%5D%7D,%22currencyCode%22%3A%22{{currency}}%22,%22paymentTerms%22%3A%22DueOnReceipt%22,%22discountPercent%22%3A%220.0%22%7D"; 
     //var pphereUrl = "paypalhere://takePayment?returnUrl=" + retUrl; 
     pphereUrl = pphereUrl + "&accepted=cash,card,paypal"; 
     pphereUrl = pphereUrl + "&step=choosePayment"; 
     pphereUrl = pphereUrl + '&invoice=' + escape(JSON.stringify(invoice)); 
     console.log(pphereUrl); 

     return pphereUrl; 
     } 

     function pay() { 
     window.location = onPay(); 
     } 

}]); 

Detail Page Order Detail

   <h1>Production Name: {{order.bkev_name}}</h1> 
       <h3>Seatcount: {{order.bkor_seatcount}}</h3> 
       <h1>Order Subtotal: £{{order.bkor_subtotal}}</h1> 
       </ion-item> 
       <button class="button button-block button-dark" onclick="pay();"> 
     Pay with PayPal&trade; Here 
    </button> 
       </ion-list> 
       </ion-content> 
      </ion-view> 

ответ

1

как вы определили вашу функцию это частный к контроллеру и не видны на $scope и поэтому не видны вашему представлению. Если вы намерены позвонить pay() с вашего взгляда, вы должны определить его как:

$scope.pay = function() { ... } 
+0

Спасибо Lex. Я изменил код на нижнем колонтитуле и все еще выдавал ошибку https://plnkr.co/edit/nEIKNPbDpHk0s8SPY4QJ?p=catalogue – me9867

+0

Если вы все еще получаете ту же ошибку, то есть что-то, что вы нам не показываете. Возможно, вы не создаете экземпляр своего «ListController». – Lex

+0

Также попробовал это в верхней части '' '$ scope.orders = data; $ scope.whichorder = $ state.params.aId; $ scope.pay = function() {window.location = onPay()}; '' ' – me9867

Смежные вопросы