所以,我花了一天时间用Google搜索并敲击键盘,但似乎没有任何帮助。
我在Servicestack中有一个简单的REST服务,它返回此
{"Name":"ANDERSON, ALICE"}
我正试图从我的服务中调用它
.service('Myservice', function Myservice($resource) {
return $resource('http://localhost:61721/britta/:Id',
{Id: "@Id"},
{
show: { method: 'GET', params: { }, headers: {'Accept':'application/json'}}
});
});
我从一个简单的控制器中调用这个,带有硬编码值
$scope.submit = function (form){
$scope.result= Myservice.show({}, {'Id' : '1'});
alert(JSON.stringify($scope.result));
但我的表格是空的
<div class="resultpanel" ng-show="result">
<p> Name: {{ result.Name }} </p>
如果我修改我的代码以返回它工作的简单JSON,那么我想我在编写服务时很糟糕? 那个JSON.stringify只告诉我
{"Id":"1","$promise":{},"$resolved":false}
无论那意味着什么..
编辑: 这在Pythonscript中起作用,不能真正理解为什么将答案包装成“承诺”会对我有帮助吗?
import urllib2
url = 'http://localhost:61721/britta/1/?format=json'
response = urllib2.urlopen(url).read()
print response
...
{"Name":"ANDERSON, ALICE"}
的解决 的 其实我有两个问题。第一个,正如丹尼尔指出的那样,Angular得到了一个承诺,而不是一个JSON对象。当我解决这个问题时,我仍然遇到了允许跨域起源的问题。当我把它设置好时,我所有的服务都很好地向我传达了正确的承诺,并且和平来到了这个领域。
答案 0 :(得分:3)
您没有从资源调用中获得直接结果,而是获得了一些名为 promise 的内容,因此您应该按照以下方式使用它
$scope.resultPromise= Myservice.show({Id : '1'});
resultPromise.$promise.then(function (value, responseHeaders) {
console.log('All ok lets continue');
$scope.result = value;
alert($scope.result);
}, function (error) {
console.log('Something went wrong');
});
如果你看看你到现在为止所做的事情(“$ promise”:{},“$ resolved”:false )是一个尚未解决的承诺,你应该谷歌一点关于angualrjs承诺
查看以下plnkr example我使用REST全部使用资源
答案 1 :(得分:1)
这样的事情对你有用吗? :
$http({
cache: false,
url: http://localhost:61721/britta/1,
method: "GET"
}).success(function(data) {
console.log(data)
}