我有一个.NET Web服务,它返回一个类似的对象
myObj = {
prop1: value,
prop2:value,
...
prop5:value
}
我创建了一个角度服务,返回整个对象(myObj)。我创建了5个不同的指令来在应用程序的不同页面中显示这些属性(有时,其中一些可以在同一页面中)。我在这些指令中调用角服务,为其中任何一个创建"链接"函数:
link: function (scope, element, attrs) {
getService.getMethod().$promise.then(
function (myObj) {
element.text(myObj.prop1); // .prop2, ... , prop5
},
function (statusCode) {
console.log(statusCode);
}
);
}
我觉得我的方法不是最好的,调用五次角服务(通过$promise)实际上获得了相同的对象(myObj)。如果你也感兴趣的服务是如何看起来:
var localResource = $resource('https://.....',
{},
{'getAll': {method: 'JSONP', isArray: false, params: {callback: 'JSON_CALLBACK'}}}
);
return {
getMethod: function () {
return localResource.getAll();
}
}
请帮忙,如果有人有想法,我可以改进吗?
谢谢!
听起来您只能让getMethod
发出一个服务器调用。
.factory("getService", function () {
var getAll;
return {
getMethod: function () {
if (!getAll) {
getAll = localResource.getAll();
}
return getAll;
};
};
});