我如何通过工厂从 angularjs 中赋值
How can I assign value from angularjs by factory
首先我有这样的工厂:
app.factory('getApiUrl', function (httpq, $q) {
var obj = {};
obj.getResponse = function (hurl) {
var promise = $q.defer();
httpq.get(hurl).then(function (data) {
//obj = data.data;
promise.resolve(data.data);
})
return promise.promise;
}
return obj;
});
然后我创建控制器并像这样调用工厂:
app.controller('mainController', function ($scope, httpq, $q, getApiUrl) {
$scope.message = "Main Content";
var namees = new Array();
var testc = getApiUrl.getResponse(hurl);
$scope.names = testc.data;
});
但它不起作用。
getResponse
方法returnspromise object。您需要在解决响应时提供回调。那么正确的用法是:
app.controller('mainController', function ($scope, httpq, $q, getApiUrl) {
$scope.message = "Main Content";
var namees = new Array();
getApiUrl.getResponse(hurl).then(function(data) {
var testc = data;
$scope.names = testc.data;
});
});
作为旁注,您还应该摆脱服务中多余的 $q.defer
,因为 httpq.get(hurl)
已经是一个承诺:
obj.getResponse = function (hurl) {
return httpq.get(hurl).then(function (data) {
return data.data;
});
}
首先我有这样的工厂:
app.factory('getApiUrl', function (httpq, $q) {
var obj = {};
obj.getResponse = function (hurl) {
var promise = $q.defer();
httpq.get(hurl).then(function (data) {
//obj = data.data;
promise.resolve(data.data);
})
return promise.promise;
}
return obj;
});
然后我创建控制器并像这样调用工厂:
app.controller('mainController', function ($scope, httpq, $q, getApiUrl) {
$scope.message = "Main Content";
var namees = new Array();
var testc = getApiUrl.getResponse(hurl);
$scope.names = testc.data;
});
但它不起作用。
getResponse
方法returnspromise object。您需要在解决响应时提供回调。那么正确的用法是:
app.controller('mainController', function ($scope, httpq, $q, getApiUrl) {
$scope.message = "Main Content";
var namees = new Array();
getApiUrl.getResponse(hurl).then(function(data) {
var testc = data;
$scope.names = testc.data;
});
});
作为旁注,您还应该摆脱服务中多余的 $q.defer
,因为 httpq.get(hurl)
已经是一个承诺:
obj.getResponse = function (hurl) {
return httpq.get(hurl).then(function (data) {
return data.data;
});
}