我有一个像这样开始的durandal(基本上是requirejs)模块:
define(['plugins/http', 'durandal/app', 'knockout', 'plugins/ajax', 'plugins/formatters', 'durandal/global'],
function (http, app, ko, ajax, formatters, global) {
//formatters is defined here
var ctor = function () {
//formatters is not defined here
我在调试器中放了一个断点,发现格式化程序是在函数外部定义的,但在函数内部却没有...
这是requirejs模块的独特之处吗?通常在函数外部声明的变量仍然可以在内部函数中访问,除非被覆盖。这似乎是某种范围问题,但我不明白我在这里缺少什么 - 在外部范围内的内部函数,那么问题是什么?
谢谢!
答案 0 :(得分:3)
您的问题可能不是该变量本身不可用。添加像这样的行
console.log(formatters)
函数
ctor
这将导致闭包包含formatters
变量,从而使调试器可以看到它。闭包只包含变量(如果使用它们 - 至少就像我在Chrome和FF中看到的那样。
答案 1 :(得分:1)
之前我遇到过这个问题,我设法通过在函数之后定义一个varieble并为其赋予参数来解决它。例如: Var fmtrs = formaters;