将 $http return 数据更新到 html 视图
Update $http return data to html view
我正在获取我的数据表 angular 服务
.service('SelectedMemberDetail', function ($http) {
return {
get : function(id) {
return $http.get('/api/members/'+ id);
},
create : function(id) {
return $http.post('/api/members/'+ id);
},
delete : function(id) {
return $http.delete('/api/members/'+ id);
}
}
})
这是调用该服务的控制器函数。
$scope.show = function (user_id) {
$scope.selectedMember = SelectedMemberDetail.get(user_id);
}
我正在尝试像这样在 html 中查看
<h2>
<span class="glyphicon glyphicon-user mleft_10 icon_big"></span>
{{ selectedMember.firstName[0] }}
</h2>
<div>
<p class="clear_margin"><b>Address: </b>
{{ selectedMember.address[0] }}
</p>
<p><b>Contact: </b>{{ selectedMember.contact[0] }}</p>
</div>
我检查了,服务函数正在返回 json 数据,在这里,
_id: "552386cb880611101168ab4b"
address: ["pata nai", "text"]
contact: ["23456", "tel"]
email: ["anoop@email", "email"]
firstName: ["Anoop", "text"]
lastName: ["singh", "text"]
我无法在浏览器上看到更新后的数据。我的代码有什么问题?
当您使用 $http.get 时,它 returns 是一个承诺,而不是数据本身。您需要这样做:
$scope.show = function (user_id) {
SelectedMemberDetail.get(user_id)
.success(function (result) {
$scope.selectedMember = result;
});
}
在此处查看更多信息:
通过 $http 使用 promise return 然后分配 value.It 没有显示任何内容,因为您直接将 promise 分配给作业,它不会在视图中显示任何内容。
SelectedMemberDetail.get(user_id).then(function(response){
$scope.selectedMember = response.data
});
SelectedMemberDetail.get(user_id).success(function(response){
$scope.selectedMember = response.data
});
有两种方法可以从 $http 中获取承诺 return,一种是 then,另一种是 success。
看看 Doc.
我喜欢这种模式:
.service('SelectedMemberDetail', function ($http) {
return {
get : function(id) {
var member = {};
member.$promise = $http.get('/api/members/'+ id)
.success(function(data) {
angular.copy(data, member);
});
return member;
}
}
})
get 方法returns 立即引用成员。当 $http 调用成功完成时,它使用 angular.copy 分配成员的属性,同时保留引用。
这样你仍然可以这样做(主要用例):
$scope.show = function (user_id) {
$scope.selectedMember = SelectedMemberDetail.get(user_id);
}
成员还有一个$promise属性,所以如果需要处理成功或错误(边缘用例):
$scope.selectedMember = SelectedMemberDetail.get(user_id);
$scope.selectedMember.$promise.success(function(data) {
// do something else with member
});
我正在获取我的数据表 angular 服务
.service('SelectedMemberDetail', function ($http) {
return {
get : function(id) {
return $http.get('/api/members/'+ id);
},
create : function(id) {
return $http.post('/api/members/'+ id);
},
delete : function(id) {
return $http.delete('/api/members/'+ id);
}
}
})
这是调用该服务的控制器函数。
$scope.show = function (user_id) {
$scope.selectedMember = SelectedMemberDetail.get(user_id);
}
我正在尝试像这样在 html 中查看
<h2>
<span class="glyphicon glyphicon-user mleft_10 icon_big"></span>
{{ selectedMember.firstName[0] }}
</h2>
<div>
<p class="clear_margin"><b>Address: </b>
{{ selectedMember.address[0] }}
</p>
<p><b>Contact: </b>{{ selectedMember.contact[0] }}</p>
</div>
我检查了,服务函数正在返回 json 数据,在这里,
_id: "552386cb880611101168ab4b"
address: ["pata nai", "text"]
contact: ["23456", "tel"]
email: ["anoop@email", "email"]
firstName: ["Anoop", "text"]
lastName: ["singh", "text"]
我无法在浏览器上看到更新后的数据。我的代码有什么问题?
当您使用 $http.get 时,它 returns 是一个承诺,而不是数据本身。您需要这样做:
$scope.show = function (user_id) {
SelectedMemberDetail.get(user_id)
.success(function (result) {
$scope.selectedMember = result;
});
}
在此处查看更多信息:
通过 $http 使用 promise return 然后分配 value.It 没有显示任何内容,因为您直接将 promise 分配给作业,它不会在视图中显示任何内容。
SelectedMemberDetail.get(user_id).then(function(response){
$scope.selectedMember = response.data
});
SelectedMemberDetail.get(user_id).success(function(response){
$scope.selectedMember = response.data
});
有两种方法可以从 $http 中获取承诺 return,一种是 then,另一种是 success。 看看 Doc.
我喜欢这种模式:
.service('SelectedMemberDetail', function ($http) {
return {
get : function(id) {
var member = {};
member.$promise = $http.get('/api/members/'+ id)
.success(function(data) {
angular.copy(data, member);
});
return member;
}
}
})
get 方法returns 立即引用成员。当 $http 调用成功完成时,它使用 angular.copy 分配成员的属性,同时保留引用。
这样你仍然可以这样做(主要用例):
$scope.show = function (user_id) {
$scope.selectedMember = SelectedMemberDetail.get(user_id);
}
成员还有一个$promise属性,所以如果需要处理成功或错误(边缘用例):
$scope.selectedMember = SelectedMemberDetail.get(user_id);
$scope.selectedMember.$promise.success(function(data) {
// do something else with member
});