2016-07-22 4 views
0

入力、選択、およびラジオ指示の指示を作成しました。AngularJS:指示文からng-modelまたはscope値を変更する方法

<input ng-model="data-ng-model="answers.{{name}}"はここ

が動作していない私のHTMLです:ここでは

<div ng-repeat="que in questions[$state.current.name]"> 
    <div ng-if="que.QuestionData._fieldType === 'text'" > 
     <text-control-dir data-que-obj="que.QuestionData" data-selected-ans="answers[que.QuestionData._attributeName]"></text-control-dir> 
    </div> 
    <div ng-if="que.QuestionData._fieldType === 'select'" > 
     <select-control-dir data="que.QuestionData"></select-control-dir> 
    </div> 
    <div ng-if="que.QuestionData._fieldType === 'radio'" > 
     <radio-control-dir data="que.QuestionData"></radio-control-dir> 
    </div> 
    <div ng-if="que.QuestionData._fieldType === 'hidden' && que.QuestionData._attributeName != 'CBQ'" > 
     <hidden-control-dir data="que.QuestionData"></hidden-control-dir> 
    </div> 
</div> 

は私のディレクティブです:

function textControlDir() 
    { 
     return { 
      transclude: true, 
      restrict: 'E', 
      /*scope: { 
       queObj: '=', 
       selectedAns: '=' 
       },*/ 
      template: '<div class="form-group">\n\ 
         <label for="{{queObj._attributeName}}" class="col-sm-5 control-label">{{queObj._text}}</label>\n\ 
         <div class="col-sm-6"><input data-ng-model="answers.{{name}}" type="text" name="{{name}}" class="form-control" id="{{id}}" value="{{selectedAns}}"></div>\n\ 
         </div>', 
      link: function (scope, element, attrs) 
      { 
       var queObj = scope.que.QuestionData; 
       scope.queObj = scope.que.QuestionData; 
       scope.name = queObj._attributeName; 
       scope.id = queObj._attributeName; 
       var selectedAns = ''; 
       if(scope.answers) 
       { 
        selectedAns = scope.answers[scope.name]; 
       } 
       if(selectedAns && selectedAns != '') 
       { 
        scope.selectedAns = selectedAns; 
       } 
       else 
       { 
        scope.selectedAns = scope.queObj._pageAttributes.defaultValue; 
       } 
      } 
     }; 
    } 

はどのように動的にNG-モデルを管理していますか?私は$scope.answers.{{name}}を入力ボックスに何か変更したときにマップしたいと思う。

答えて

1

ngModelが必要です。

http://jsfiddle.net/t2GAS/2/

+0

私は答えに入力値を設定する{{名前}} –

+0

私のコードhttp://plnkr.co/edit/Op1QDwUBECAosPUC7r3N?p=preview –

0

あなたがこれを行うことができます:

return { 
    require: 'ngModel', 
} 

次に、あなたはngModel.$setViewValue(newValue);

以下

同じachieveする方法の簡単な例であるを使用してそれに応じて、NG-モデルを更新することができます

data-ng-model="name" 

いいえ

$scope.answers.name = name; // <--- the ng-model assigned to answer.name in $scope 
+0

を確認してください:あなたがこれを行うことができ、コントローラにワットこちらをご覧くださいhttp://plnkr.co/edit/Op1QDwUBECAosPUC7r3N?p=previewここでコントローラを紹介してください。 –

+0

$ scope.answers.name = name;を更新することができますか?この仕事も。ここではidの動的な名前は –

+0

から来ています –

関連する問題