У меня проблема с моим приложением IONIC. Я хочу перезагрузить свои данные, которые я получаю от узла JS с помощью $ http.get, после $ http.post. Вот мой код:

.controller('todoTodayCtrl', 
function($scope, AuthService, API_ENDPOINT, $http, $state, $ionicPopup) {
  $http.get(API_ENDPOINT.url + '/today').then(function(result) {
      $scope.todaylist = result.data.msg;
  });
})

.controller('todoTodayNewCtrl', 
function($scope, AuthService, API_ENDPOINT, $http, $state, $ionicPopup){
    $scope.today = {
        title: ''
    };
    $scope.todoNewButton = function() {
        $http.post(API_ENDPOINT.url + '/today', $scope.today).then(function(result) {
            $state.go('menu.todoToday');
        }, function(errMsg) {
            var alertPopup = $ionicPopup.alert({
                title: 'Nelze přidat Todo',
                template: errMsg
            });
        });
    };
})

И первая страница

<ion-view title="Todo Today" ng-controller="todoTodayCtrl">
<ion-content overflow-scroll="true" padding="true" class="has-header">
    <ion-list>
        <ion-item class="item-divider"  ng-repeat="today in todaylist">{{today.title}} - {{today.time}}</ion-item>
        <button class="button button-stable button-block " ui-sref="menu.todoTodayNew">Přidat todo</button>
    </ion-list>
</ion-content>

И страница с формой

<ion-view title="Nové todo today">
<ion-content overflow-scroll="true" padding="true" class="has-header">
    <ion-list>
        <label class="item item-input">
            <span class="input-label">Nový úkol</span>
            <input type="text" placeholder="Nová položka" ng-model="today.title">
        </label>
        <button class="button button-stable button-block " ng-click="todoNewButton()">Přidat todo today</button>
    </ion-list>
</ion-content>
1
Jakub Stejskal 20 Фев 2016 в 17:27

3 ответа

Лучший ответ

Решаемая

    .controller('todoTodayCtrl', function($scope, $rootScope, AuthService, API_ENDPOINT, $http, $state, $ionicPopup) {
      $rootScope.todaylist = [];
      $http.get(API_ENDPOINT.url + '/today').then(function(result) {
        $rootScope.todaylist = result.data.msg;
      });
})

.controller('todoTodayNewCtrl', function($scope, $rootScope, AuthService, API_ENDPOINT, $http, $state, $ionicPopup){
  $scope.today = {
    title: '',
    time: ''
  };
  $scope.todoNewButton = function() {
    $http.post(API_ENDPOINT.url + '/today', $scope.today).then(function(result) {
      $rootScope.todaylist.push(result.data.msg);
      $state.go('menu.todoToday');

    }, function(errMsg) {
      var alertPopup = $ionicPopup.alert({
        title: 'Nelze přidat Todo',
        template: errMsg
      });
    });
  };
})
0
Jakub Stejskal 20 Фев 2016 в 17:44

Вы должны вставить новое значение today в свой $ scope.todaylist в обратном вызове POST-запроса:

$http.post(API_ENDPOINT.url + '/today', $scope.today).then(function(result) {
    $scope.todaylist.push(result);
    $state.go('menu.todoToday');
}, function(errMsg) {
    var alertPopup = $ionicPopup.alert({
        title: 'Nelze přidat Todo',
        template: errMsg
    });
});

Или передайте результат вашему todoTodayCtl через $ state.

$state.go('menu.todoToday', {myParam: {some: 'thing'}})

$stateProvider.state('menu.todoToday', {
                url: '/myState',
                params: {myParam: null}, ...

А затем получить доступ к параметру в вашем контроллере.

$stateParams.myParam //should be {some: 'thing'}
0
Striped 20 Фев 2016 в 14:45

И мой сервер NodeJs

    apiRoutes.post('/today', passport.authenticate('jwt', {session: false}), function(req, res) {
  var token = getToken(req.headers);
  if (token) {
    var decoded = jwt.decode(token, config.secret);
    User.findOne({
      name: decoded.name
    }, function(err, user) {
      if (err) throw err;

      if (!user) {
        return res.status(403).send({success: false, msg: 'Authentication failed. User not found.'});
      } else {
        console.log(req.body.title);
        var newToday = new Today({
          title: req.body.title,
          time: 'Timeee',
          user: user.name
        });
        newToday.save(function(err) {
          if (err) {
            res.json({succes: false, msg: 'Error'});
          } else {
            res.status(200).json({succes: true, msg: newToday});
          }
        });
      }
    });
  } else {
    return res.status(403).send({success: false, msg: 'No token provided.'});
  }
});
0
Jakub Stejskal 20 Фев 2016 в 15:18