2015-06-26 231 views
0

的时候,这里没有坚持是我的控制器......范围更改视图

'use strict'; 

    angular.module('funApp') 
     .controller('MainCtrl', function ($scope, $http) { 
     $scope.choice = null; 
     $scope.addQuestionFeedback = ''; 
     $scope.questions = []; 
     $scope.questions = [ 
      { 
       question: "What is your favorite color", 
       type: "color" 
      }, 
      { 
       question: "What is your favorite food", 
       type: "food" 
      } 
     ]; 

     $scope.submit = function() { 
      this.questions.push(this.addQuestion); 
      $scope.addQuestionFeedback = 'Question Successfully Added!'; 
     } 
     }); 

的问题是我有一个成功的调用submit()一个观点,但是当我改变看法,我在submit()添加的对象不持续并且$scope.question仅返回到具有2个对象的初始状态。我该如何解决这个问题?

+0

使用$ scope.question.push代替this.question.push。此外,this.addQustion必须改变,以$ scope.addQuestion如果它是一个范围变量或模型变量 –

回答

1

使用MVC模式。服务(模型)支持你的对象,你的控制器就像是在你的对象和你的视图之间进行的一样。大部分完成的工作通常都在您的模型中。角度服务是持久的,当控制器不再被使用时会被销毁和重新创建。

angular.module('funApp') 
     .controller('MainCtrl', function ($scope, $http, questions) { 
    $scope.choice = null; 
    $scope.addQuestionFeedback = ''; 
    $scope.questions = questions.questions; 

    $scope.submit = function() { 
     questions.questions.push(this.AddQuestion); 
     $scope.addQuestionFeedback = 'Question Successfully Added!'; 
    } 
    }) 

.factory('questions', function() { 
    var questions = [ 
     { 
      question: "What is your favorite color", 
      type: "color" 
     }, 
     { 
      question: "What is your favorite food", 
      type: "food" 
     } 
    ]; 


    return { 
    questions = questions 
    } 
}) 
+1

这是正确的做法。使用服务或工厂通过控制器持久数据。 – aorfevre