angularJS错误:错误:n.replace不是函数

时间:2015-04-01 15:19:34

标签: javascript angularjs

我使用第三方JS文件与外部API进行交互,在发送之前对数据进行标记。在一个简单的测试页面中,该函数完全正常工作并返回一个令牌。但是,当我尝试在我使用AngularJS的实际应用程序中实现时,它会因错误而失败:"错误:n.replace不是函数"。

这是一个有效的简单测试脚本:

    // Click event handler
$('#form-submit').click(function (e) {
    e.preventDefault();

    $('#response').hide();

    var payload = {
        api_id: 'abcde123',
        var1: $('#var1').val(),
        var2: $('#var2').val(),
        var3: $('#var3').val(),
        var4: $('#var4').val()
    };

    // Tokenize data
    vendorScript.createToken(payload)
      .success(onTokenCreated)
      .error(onTokenFailed);

});

这是抛出错误的Angular代码:

app = angular.module 'MyApp'

myCtrl = ($scope, $http, $window, $q) ->

  myFormParams = ->
    api_id: 'abcde123'
    var1: $scope.var1
    var2: $scope.var2
    var3: $scope.var3
    var4: $scope.var4

  onTokenCreated = (response) ->
     # do real transaction here by using the onetime_token
     alert("The onetime_token created: " + response.onetime_token)
     $scope.checkoutPromise.resolve()

  onTokenFailed = (response) ->
     # do real transaction here by using the onetime_token
     alert("Getting onetime_token failed: " + response.onetime_token)
     $scope.checkoutPromise.resolve()

  $scope.submitForm = ->
    return if $scope.isProcessingOrder

    $scope.isProcessingOrder = true
    $scope.checkoutPromise = $q.defer()
    $scope.checkoutPromise.promise.then ->
      $scope.isProcessingOrder = false

    vendorScript.createToken(myFormParams())
      .success(onTokenCreated)
      .error(onTokenFailed);  

app.controller 'myCtrl', ['$scope', '$http', '$window', '$q', myCtrl]

所以,我之前已经读过因var不是字符串而引起的var.replace错误(因此没有替换方法);但是,当我调试原始脚本时,有效负载作为对象传递,就像myFormParams()作为对象传递一样。此外,当我对myFormParams()进行字符串化(即" JSON.stringify(myFormParams())")时,标记化功能失败。

一直在敲打我的脑袋;任何帮助/见解将不胜感激!

0 个答案:

没有答案