如何使用函数会产生相同的角度控制器

时间:2017-09-08 22:25:06

标签: angularjs function scope controller output

我正在尝试一种简单的角度逻辑,它不适合我。我很感激任何帮助。

我的控制器有这样的东西:

    $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 }}

它正确执行并给我结果。但每当我保存到另一个变量时,它就无法正常工作。我在角度控制器中保存值的方式中缺少一些东西。

请帮忙!

1 个答案:

答案 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时。它不存在于它之外。