我有这个angularjs函数:
var ajax = (function () {
var ajax = function () { };
ajax.get = function (_url) {
var _data = '';
$http({
url: _url,
method: "GET",
data: _data
}).success(function(data, status, headers, config) {
$scope.data = data;
console.log(data);
}).error(function(data, status, headers, config) {
$scope.status = status;
});
}
})();
调用此函数时:
ajax.get("http://www.test.com/request");
我收到此错误:
无法阅读财产' get'未定义的
这里有什么问题?
答案 0 :(得分:1)
在顶级你有var ajax = (function () {...})()
,这是IIF,它不会返回任何内容,这意味着你的ajax将是未定义的。您想从IIF中返回创建的ajax对象。
尝试这样的事情
var ajax = (function () {
var ajax = function () { };
ajax.get = function (_url) {
var _data = '';
$http({
url: _url,
method: "GET",
data: _data
}).success(function(data, status, headers, config) {
$scope.data = data;
console.log(data);
}).error(function(data, status, headers, config) {
$scope.status = status;
});
}
return ajax;
})();
答案 1 :(得分:1)
让我们从这里开始:
var ajax = function () { };
ajax不是一个对象,它是一个函数,这就是你不能做这个任务的原因
ajax.get = function (_url) {
var _data = '';
$http({
url: _url,
method: "GET",
data: _data
}).success(function(data, status, headers, config) {
$scope.data = data;
console.log(data);
}).error(function(data, status, headers, config) {
$scope.status = status;
});
}
如果你想这样做,你就像这样声明变量:
var ajax = {};
现在来看大局:
var ajax = (function () {
var ajax = { };
ajax.get = function (_url) {
var _data = '';
$http({
url: _url,
method: "GET",
data: _data
}).success(function(data, status, headers, config) {
$scope.data = data;
console.log(data);
}).error(function(data, status, headers, config) {
$scope.status = status;
});
}
})();
您无法访问功能变量,即使您可以这样做(当然仍然不正确):
ajax.ajax.get("http://www.test.com/request");
试试这个:
var ajax = { };
ajax.get = function (_url) {
var _data = '';
$http({
url: _url,
method: "GET",
data: _data
}).success(function(data, status, headers, config) {
$scope.data = data;
console.log(data);
}).error(function(data, status, headers, config) {
$scope.status = status;
});
}
};
并访问它:
ajax.get("http://www.test.com/request");
答案 2 :(得分:0)
function() {
var ajax = function() {};
ajax.get = function(_url) {
console.log(1)
}
})();
注意返回一个值,所以ajax是未定义的,然后你调用undefined of get。
var ajax = (function() {
var ajax = function() {};
ajax.get = function(_url) {
console.log(1)
}
})();
console.log(
(function() {
var ajax = function() {};
ajax.get = function(_url) {
console.log(1)
}
})()
)
ajax.get("http://www.test.com/request");