【问题标题】:Passing parameters to nested function in coffeescript将参数传递给coffeescript中的嵌套函数
【发布时间】:2012-04-10 16:10:23
【问题描述】:

函数'start'将用户名和密码传递给函数logIn。问题是我得到了:

'ReferenceError: 找不到变量:用户名'

问题出现在 sn-p 的末尾。在 sn-p 的第二个和第三个“@echo”处,变量“用户名”正确显示。

问题是:如何将参数用户名和密码进一步传递给嵌套函数?

片段:

logIn = (username, password) ->
        @echo '--- LogIn ---'
        @echo '--- KNOWN HERE = ' + username + " ---"
        @then ->
            @echo '--- username KNOWN HERE = ' +  username + ' ---'
            @evaluate ->
                  @echo '--- @evaluate username NOT KNOWN HERE = ' + username + ' ---'

完整代码:

    casper = require('casper').create({
        clientScripts: ["includes/jquery.min.js"],
        verbose: true,
        logLevel: 'debug'
})

    logIn = (username, password) ->
        @echo '--- LogIn ---'
        @echo '--- '+username+' // '+password+" ---"
        @then ->
            @echo '--- username in do = ' +  username + ' ---'
            @evaluate ->
                @echo '--- @evaluate username = ' + username + ' ---'
                $('#id_email').val(username)
                $('#id_password').val(password)
                $('.AuthForm').submit()

    start = -> 
        @start loginURL
        @echo '--- accounts.length = ' + accounts.length + ' ---'
        logIn.call @, accounts[currentAccount][0], accounts[currentAccount][1]

【问题讨论】:

  • 也许你混合了制表符和空格?尝试将制表符转换为空格,然后查看该行是否仍嵌套在 logIn 中。
  • 我试过了,但没有用。

标签: coffeescript casperjs


【解决方案1】:

您的问题是Casper#evaluate 在您正在测试的页面中运行给定函数。该页面无法访问测试脚本中的usernamepassword 变量,除非您将它们传入。解决方案是更改

@evaluate ->
  ...

@evaluate ((username, password) ->
  ...
), {username, password}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-19
    相关资源
    最近更新 更多