我正在尝试一种简单的角度逻辑,它不适合我。我很感激任何帮助。
我的控制器有这样的东西:
$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上显示一个新表。我没有运气这样做。 在我的控制器文件中,每当我保存即将发生的事件的值时,它就不会保存。
我在我的控制器文件中这样做,就在我调用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 }}
它正确执行并给我结果。但每当我保存到另一个变量时,它就无法正常工作。我在角度控制器中保存值的方式中缺少一些东西。
请帮忙!
答案 0 :(得分:1)
你需要把
$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
函数是解析promise时的回调函数。在回调之外将UpcomingEvents[0].EventID
分配给$scope.hello
会导致$scope.hello
被分配undefined
。简单地说,这个赋值是在回调发生之前执行的,当UpcomingEvents
仍为空时。
此外,您的作业应该如下所示
$ scope.hello = <强> $范围强> .UpcomingEvents [0] .EventID;
当您在$ scope中声明UpcomingEvents
时。它不存在于它之外。