2015-09-10 2 views
0

Я пытаюсь создать новый объект и вставить его в базу данных, но также сразу показать его на моей странице. Вот моя функция, показывающая все вопросы на странице:

$scope.questions = Question.find({ 
    filter: { 
    order: 'timestamp DESC', 
    include: ['account', 'category'] 
    } 
}, function(questions, err){ 
    console.log(questions); 
}); 

А вот моя функция для создания нового вопроса:

$scope.sendQuestion = function(question){ 
    Question.create({ 
    title: $scope.question.title, 
    text: $scope.question.text, 
    isAnonymous: $scope.question.isAnonymous, 
    accountId: $scope.question.accountId, 
    categoryId: $scope.question.category.id, 
    timestamp: new Date() 
    },function(question, err){ 
    $scope.questions.push(question); //scope should update here?! 
    //$scope.$apply(); 
    }); 
} 

я создаю новый объект Вопрос, а затем вставить в $ scope.questions list, но новый вопрос не отображается в представлении. . Когда я называю $ объем $ применять я получаю ошибку: «переварить уже в процессе»

+0

Вы можете показать, где вы задаете вопрос? – IfTrue

+0

Вопрос - это сервис, созданный после определения моделей баз данных. – neeev

+0

как вы это решили? – user2099451

ответ

0

Try сервис использование угловой $ таймаут

$scope.sendQuestion = function(question){ 
     Question.create({ 
     title: $scope.question.title, 
     text: $scope.question.text, 
     isAnonymous: $scope.question.isAnonymous, 
     accountId: $scope.question.accountId, 
     categoryId: $scope.question.category.id, 
     timestamp: new Date() 
     },function(question, err){ 
     // use $timeout service 
     $timeout(function() 
     { 
      $scope.questions.push(question); 
     }); 
     }); 
    } 
0

Еще один способ определить следующую функцию и использовать его.

$scope.safeApply = function (fn) { 
    var phase = this.$root.$$phase; 
    if (phase == '$apply' || phase == '$digest') { 
     if (fn && (typeof (fn) === 'function')) { 
      fn(); 
     } 
    } else { 
     this.$apply(fn); 
    } 
}; 

Ваш код будет выглядеть следующим образом.

$scope.sendQuestion = function(question){ 
     Question.create({ 
     title: $scope.question.title, 
     text: $scope.question.text, 
     isAnonymous: $scope.question.isAnonymous, 
     accountId: $scope.question.accountId, 
     categoryId: $scope.question.category.id, 
     timestamp: new Date() 
     },function(question, err){ 
     $scope.safeApply(function() 
     { 
      $scope.questions.push(question); 
     }); 
     }); 
    } 
Смежные вопросы