离子和角度 - 从控制器更新/刷新视图

Ionic and Angularjs - Update/Refresh View from Controller

本文关键字:更新 控制器 刷新 新视图      更新时间:2023-09-26
通常

的开始,我对Ionic和Angularjs都是新手。我正在开发一个Ionic应用程序,它的核心非常简单。我们显示一个课程(会话(列表,该人单击图标以预订课程,然后图标更改以允许他们取消课程。我们还会更新卡片,以显示当天每个会话的剩余名额。我有代码可以在类中添加和删除人员,但我不确定如何从控制器内更新模板视图。控制器代码非常简单

  // Check Person in to session.
  $scope.addCheckIn = function(schedule){
      var promise = sessionDataService.checkinSession(schedule.sessionID);
      promise.then(function(data){
          // Update (refresh) Schedule Details 
          // NOT SURE WHAT TO PUT HERE??
      });
  };

我尝试了许多不同的方法,包括

刷新$state并调用doRefresh,甚至调用原始控制器方法来再次填充卡片,但除非我在屏幕上的状态之间物理单击,否则视图不会更新

    //$state.go('app.schedules', {}, {reload: true});
    //$scope.doRefresh();
    //getScheduleData(formatDate(selectedDate), formatDate(selectedDate), 'true');

我也看过$scope.apply和$scope.timeout,但我不确定这是否会让我离真正的解决方案更远。

更新

后更新视图的正确方法是什么?应该在承诺之后,那么在控制器中,还是应该调用服务并更新所有内容。

任何关于最好的方法和正确的点的提示将不胜感激。

谢谢大家。

在你的承诺中,你应该将数据添加到范围中。

$scope.scheduledetails = data;

然后在模板中,您将能够使用 AngularJS 括号从控制器访问对象计划详细信息,以将数据绑定到 HTML。

<h1>{{scheduledetails.title}}</h1>
<p>Details : {{scheduledetails.details}}</p>

AngularJS应该负责刷新所需的内容,而无需调用任何方法或任何东西。

完整示例

控制器

$scope.addCheckIn = function(schedule){
      var promise = sessionDataService.checkinSession(schedule.sessionID);
      promise.then(function(data){
          $scope.scheduledetails = data;
      });
  };

模板

<h1>{{scheduledetails.title}}</h1>
<p>Details : {{scheduledetails.details}}</p>