2015-03-30 80 views
0

我需要在另一個模型值內使用模型值,讓我告訴你一個示例。用另一個模型值替換模型中的字符串

我正在構建一個「教程」應用程序,它使用JSON文件來配置所有問題/答案。

... 
"courses": [ 
    "lessons": [ 
     "questions": [ 
      { 
       "id": "uniqueIdOne", 
       "question": "What is your name?", 
       "answer" : "" 
      }, 
      { 
       "id": "uniqueIdTwo", 
       "question": "Great {{uniqueIdOne}}, this is some random text.", 
       "answer": "" 
      } 
     ] 
    ] 
] 
... 

我需要的是讓教程編輯能夠像樣本一樣在另一個問題{{uniqueIdOne}}中使用以前的答案的方法。

有一種方法可以做到這一點?或者我應該創建一個過濾器來解析字符串並循環JSON文件,直到找到相應的id,然後以舊的方式替換文本?

現在,應用程序根據問題呈現輸入文件,以獲得用相應模型映射的用戶答案。

謝謝!

+0

歡迎堆棧溢出。如果您提供了一些當前正在使用的代碼來呈現此JSON數據,則您的問題可能會更容易可視化並回答。您可以查看http://stackoverflow.com/help/mcve,獲取有關如何使您的示例更易於遵循的提示。 – Claies 2015-03-30 20:30:34

+0

謝謝!當然,我會的。 – 2015-03-31 00:59:37

回答

0

是的,這是可能的,並且有多種方式可以完成同樣的事情。

假設你有一個控制器設定ng-controller

$scope.questions = [ 
      { 
       "id": "uniqueIdOne", 
       "question": "What is your name?", 
       "answer" : "" 
      }, 
      { 
       "id": "uniqueIdTwo", 
       "question": "Great <answer question-id="uniqueIdOne" questions="questions"></answer>, this is some random text.", 
       "answer": "" 
      } 
     ]; 

module.directive('answer', function() { 
    return { 
     restrict: 'E', 
     scope: { 
      questions: '=', 
      questionId: '=' 
     }, 
     replace: true, 
     template: '<span class="answer">{{ answer }}</span>', 
     link: function($scope) { 
      var question = _.find($scope.questions, {id: $scope.questionId}); 
      if(question) { 
       $scope.answer = question.answer; 
      } 
     } 
    }; 
}); 

哪裏_.findlodash.find

現在,你需要確保你bind HTML當顯示的問題,這樣的指令(answer我們只是定義)在它們內部被AngularJS解析。

所以:

<div ng-repeat="question in questions"> 
    <span ng-bind-html="question.question"></span> 
</div> 
相關問題