js命名空间和变量范围
js namespaces and variable scope
如果我有自定义的javascript命名空间,如以下结构
myns.controllers.home = {
init = function(){
},
doSomething: function(){
var cars = 100; // simple example
var url = 'someurl';
myns.ajaxHelper.execute(url, { id: id }, myns.controllers.home.jobUtils.callback);
}
}
myns.controllers.home.jobUtils.callback = function (cars) {
alert(cars.lenght); // cars is undefined?
}
为什么cars变量在这里是未定义的,您将如何解决/重构这个问题?
我会尝试将变量声明为ns属性:
myns.controllers.home = {
cars: 100,
init: ...
myns.ajaxHelper.execute(url, { id: id }, myns.controllers.home.jobUtils.callback()); //for executing a function
var cars = 100; // simple example
myns.ajaxHelper.execute(url, { id: id }, myns.controllers.home.jobUtils.callback(cars)); //to pass a variable into a function
我认为您在执行函数时错过了"()"打开和关闭括号
您的要求还不完全清楚,但我认为这可能会有所帮助:
如果您创建一个更好的回调函数来捕获本地cars
值,您可以:
myns.ajaxHelper.execute(url,
{ id: id },
function(data){
myns.controllers.home.jobUtils.callback(data, cars)
});
然后将回调定义为:
myns.controllers.home.jobUtils.callback = function (data, cars) {
alert(cars.lenght); // cars is undefined?
}
尽管我不清楚100
的值如何具有length
。也许我误解了。
相关文章:
- ngDialog-弹出窗口未更新范围变量
- AngularJS范围变量Unwatch
- 将外部控制器的范围变量设置为角度
- 对于使用传递的数据计算的局部范围变量,角度绑定在自定义指令中不起作用
- 如何使用EnquireJS使AngularJS范围变量依赖于媒体查询
- 具有范围变量的控制器不工作
- 范围变量返回长度错误
- 将 NodeJS 模块范围变量作为对象访问
- Angularjs 更新 setTimeout 中的范围变量不起作用
- 递归承诺调用 - 内存范围变量问题
- AngularJS:从指令设置范围变量
- Angularjs:访问范围变量数组并计算平均值
- 范围变量更新,但不更新视图
- 从html调用angularjs控制器中的一个函数,但未定义范围变量
- 如何在编辑范围变量时(暂时)避免摘要循环
- 防止Angular范围变量通过引用自动绑定到服务私有成员
- 使用 AngularJS 从指令设置范围变量
- 集合回调忽略范围变量
- 使用forEach修改角度范围变量
- 因果报应测试中未定义的预期范围变量