AngularJS: Как установить ng-модель или изменить значение области действия из директивы

0

Я создал директиву для директив ввода, выбора и радио.

<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}} когда пользователь меняет что-либо в поле ввода.

2 ответа

1
Лучший ответ

Вы можете потребовать ngModel.

return {
    require: 'ngModel',
}

Затем вы можете обновить ng-модель, используя ngModel.$setViewValue(newValue);

Ниже приведен простой пример того, как можно achieve того же:

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

  • 0
    Я хочу установить входное значение в ответах. {{Name}}
  • 0
    проверьте мой код plnkr.co/edit/Op1QDwUBECAosPUC7r3N?p=preview
0

Вы можете сделать это:

 data-ng-model="name" 

Теперь в контроллере вы можете сделать это:

$scope.answers.name = name; // <--- the ng-model assigned to answer.name in $scope
  • 0
    Пожалуйста, посмотрите этот plnkr.co/edit/Op1QDwUBECAosPUC7r3N?p=preview, как я могу представить контроллер здесь. могу ли я сделать этот код в ссылке
  • 0
    Заменить или удалить, если бы я мог обновить $ scope.answers.name = name; тоже эта работа. но здесь имя идентификатора динамического приходят из очереди
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню