Angularjs: модель не доступна

0

Я использую ng-шаблон в angularjs

<script type="text/ng-template" id="ng-wig/views/ng-wig.html">
<div class="ng-wig">
........
</div>
<script>

и у меня есть текстовое поле, использующее этот ng-шаблон.

<textarea ng-wig="content" ng-model="contents"></textarea>

но эта ng-модель не может быть доступна внутри контроллера. пожалуйста помоги.

Теги:

1 ответ

2

Когда вы загружаете свой шаблон textarea внутри ng-include, если вы посмотрите на директиву ng-include вы увидите, что он создает новую область, которая прототипически унаследована из родительской области.

Если вы используете какую-либо переменную области видимости, объявленную в контроллере, не будут доступны внутри div. Чтобы получить доступную переменную контроллера внутри ng-include вы должны объявить ее как object например $scope.model= {} тогда вы должны объявить свойства в нем. как ng-mode="model.contents"

наценка

<textarea ng-wig="model.content" ng-model="model.contents"></textarea>

контроллер

$scope.model = {};

Здесь вы можете найти аналогичный ответ


Существует несколько подходов, кроме того, что вы можете решить эту проблему.

Другой способ был бы, вы могли бы использовать контроллер как подход таким образом, которого вы можете избежать. В этом вам нужно использовать this внутри контроллера и использовать псевдоним контроллера, показывая переменную на html, например vm.contents

Makrup

<div ng-controller="myCtrl as vm">
   <div ng-include="'ng-wig/views/ng-wig.html'"></div>
</div>

Textarea

<textarea ng-wig="content" ng-model="vm.contents"></textarea>

Также вы можете указать родительскую область ng-include которая представляет собой не что иное, как область контроллера, просто делая $parent в вашей ng-model, в этом случае ваша ng-модель будет равна $parent.contents

Textarea

<textarea ng-wig="$parent.content" ng-model="$parent.contents"></textarea>

Заметка

Не используйте этот подход, используйте 1-й, что более предпочтительно.

  • 0
    Можете ли вы разработать наш ответ?
  • 1
    @NishamMahsin, конечно, дай мне .. несколько минут
Показать ещё 5 комментариев

Ещё вопросы

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