2015-12-26 1 views
1

Я новичок в угловых js.I написал директиву для загрузки шаблона url и попытался изменить значение ng-модели. Но значение не меняется.Как назначить значение для ng-модели динамически с помощью шаблона url?

Я попытался имитировать этот exmaple http://tinyurl.com/hg7ehge за исключением того, что я пытался загрузить html с URL-адреса.

Ниже приводится код plunker: http://tinyurl.com/zwmleec

ответ

1

Для refere модели по динамическому имени вы можете изолировать объем (объем: истина) и использовать $parent ссылки на внешнюю область:

.directive('dynamicmodel', function($templateRequest, $compile) { 
    return { 
     replace: true, 
     restrict: 'E', 
     scope: true, 
     link: function(scope, element, attrs) { 
      scope.name = attrs.comm; 
      $templateRequest("template.html").then(function(html) { 
       element.replaceWith($compile(html)(scope)); 
      }); 
     } 
    }; 
}); 

, а затем в использовании шаблонов scope.comm:

<input type="text" ng-model="$parent[name].subject" /> 

Демо:http://plnkr.co/edit/B4HgvxuT1jZJ2H3U9UO9?p=info

+0

Спасибо за ваш ответ. Решение, которое я искал, есть, где я могу генерировать значение ng-модели динамически. Поэтому, когда я использовал директиву «dynamicmodel» и передал значение в виде электронной почты с входа, значение для ngmodel ввода в шаблоне должно быть сгенерировано как «email.subject». Если я изменю ' 'to' 'значение модели ng в шаблоне должно измениться на "sms.subject" –

+0

О, я пропустил понимание. Проверьте обновленный ответ и демонстрацию. – dfsq

+0

Спасибо за решение. Это сработало. Но я застрял на следующем уровне. Когда я пытаюсь использовать определенную модель в контроллере, он говорит, что «email.subject» не определен. Я полагаю, что контроллер загружается до отображения представления. Есть ли способ загрузить контроллер после создания шаблона директивы. Я попытался использовать '$ viewContentloaded', но он не работал. Любые идеи здесь? –

Смежные вопросы