如何使用功能导致相同的角度控制器
问题描述:
我正在尝试一个简单的角度逻辑,它不适合我。我将不胜感激任何帮助。如何使用功能导致相同的角度控制器
我的控制器有这样的事情:
$scope.UpcomingEvents = {}
$scope.someID = 3;
$http.get(BaseUrl().url + 'jury/UpcomingEvents?someID=' + someID)
.success(function (response) {
console.log(response);
$scope.UpcomingEvents = response;
})
该控制器给出我的html正确的结果,当我这样称呼它在我的HTML文件:
<tbody>
<tr ng-repeat="data in UpcomingEvents">
<td>{{data.EventID}}</td>
<td>{{data.Title}}</td>
</tr>
</tbody>
但是我想修改UpcomingEvents在角度控制器中的表格,然后在html上显示一个新表格。我没有这样做的运气。 在我的控制器文件中,每当我保存一个Upcoming Events的值时,它都不会保存。
我做它像这样在我的控制器文件,仅低于我叫那个地方HTTP GET功能,就像这样:
$scope.UpcomingEvents = {}
$scope.someID = 3;
$http.get(BaseUrl().url + 'jury/UpcomingEvents?someID=' +
someID)
.success(function (response) {
console.log(response);
$scope.UpcomingEvents = response;
})
$scope.hello=0;
//the line that just does not work
$scope.hello= UpcomingEvents[0].EventID;
最后一行是不节能即将发生的事件是第一个值。 我做错了什么?
我把这个在我的HTML作为
{{hello}}
及其给我任何结果。
但是如果我输出我的HTML这样的价值,它提供了正确的输出:
{{ UpcomingEvents[0].EventID }}
它正确地执行,并给我造成的。但每当我保存到另一个变量,它只是不工作。我错过了在角度控制器中保存值的方式。
请帮忙!
答
你需要把
$scope.hello= UpcomingEvents[0].EventID;
的success
调用内部,就像这样:
$http.get(BaseUrl().url + 'jury/UpcomingEvents?someID=' + someID)
.success(function (response) {
$scope.UpcomingEvents = response;
$scope.hello= $scope.UpcomingEvents[0].EventID;
});
$http.get
是一个异步操作,更具体地说,它不返回值本身,而是$q
承诺。 success
功能是解决承诺时的回调函数。在回拨之外指定UpcomingEvents[0].EventID
至$scope.hello
导致$scope.hello
被指定为undefined
。简单地说,这个任务在回调发生之前执行,当UpcomingEvents
仍然是空的。
而且,你的任务应该是这样的
$ scope.hello = $范围 .UpcomingEvents [0] .EventID;
如您在$范围内声明UpcomingEvents
。它不在其外面。
我有这样一个问题:如果我想从成功函数外的成功函数使用$ scope.hello,我该如何使用它?我想要使用这个$范围。你好在另一个函数的成功函数之外。更具体地说,我想在我的控制器的另一个地方使用这个$ scope.hello值。有没有办法做到这一点?谢谢 – Pares
在这种情况下,需要确保异步操作已完成,并在'$ scope.hello'中存储了适当的值。您可以在回调函数之前初始化'$ scope.hello'并设置一些默认值,以便您在别处访问时不会收到“undefined”,但完整的解决方案取决于您的流程。 – pkowalcze