如果我有自定义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?
}
为什么汽车变量在这里未定义,你将如何解决/重构?
答案 0 :(得分:1)
我尝试将变量声明为ns属性:
myns.controllers.home = {
cars: 100,
init: ...
答案 1 :(得分:0)
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
我认为你在执行函数
时会错过'()'开启和关闭括号答案 2 :(得分:0)
我们并不完全清楚你在问什么,但我认为这可能有所帮助:
如果您创建一个更好的回调函数来捕获本地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
可能具有{{1}}但我不清楚。也许我误解了。