ng-click HTML-код работает нормально, но тот же код в функции angularjs .ng-щелчок не работает - PullRequest
0 голосов
/ 01 ноября 2018

HTML

<div id="rightpane">
  <div id="rightpanecontent" >  
     <div id ="Addbtn" style="text-align: right;"> 
     <button type="btnAdd" class="btnAddText" ng-click="addText()" style="margin-top:10px;margin-left:166px; color: white;background-color:#673ab7;">Add Text</button>
   </div>
  <div class="si-note-separator" ></div> 
 <div id="myDIV" style="display: none;">     
 <textarea ng-model="imagecomment" name="taname" id="taid" wrap="soft" ></textarea>
  <button type="button" 
ng-click="addCommentToImage()" >Save</button>
  </div>
</div>
</div>

Controller.js файл. (Необходимо сделать html код динамическим, поэтому поместить его в controller.js file.ng-click не работает)

function load() {
    var text = '';
     text = text + '<div id ="Addbtn" style="text- 
      align:right;">' + '<button type="btnAdd" class="btnAdd" click="Add()" style="margin-top:10px;margin-left:166px; color: white;background-color:#673ab7;">Add</button>'+
    '</div>' +
  '<div class="si-note-separator" ></div>'+ '<div id="myDIV">'+     
  '<textarea ng-model="comment" name="taname" id="taid" wrap="soft" ></textarea>'+
 '<button type="button" ng-click="addComment()" >Save</button>'+
      '</div>';
 }

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Если вы хотите, чтобы ваш HTML был динамическим, вам придется скомпилировать его, используя сервис $compile, чтобы его можно было присоединить к объекту scope. Тогда будет работать только ng-click.

0 голосов
/ 01 ноября 2018

Я не вижу никакой динамической вещи в вашем шаблоне функции загрузки, я бы порекомендовал вам сохранить этот html внутри файла html и загрузить его, используя директиву ng-include

template.html

<div>
    <div id ="Addbtn" style="text- 
          align:right;">
        <button type="btnAdd" class="btnAdd" click="Add()" style="margin-top:10px;margin-left:166px; color: white;background-color:#673ab7;">Add</button>
    </div>
    <div class="si-note-separator" ></div>
    <div id="myDIV">
      <textarea ng-model="comment" name="taname" id="taid" wrap="soft" ></textarea
      <button type="button" ng-click="addComment()" >Save</button>
    </div>
</div>

Использование

<div ng-include="clicked ? '': 'template.html'"></div>

Просто по нажатию кнопки переключается флаг clicked.


Другим способом было бы добавить html-контент в DOM и скомпилировать его с помощью службы $compile, которая помогает относительному угловому коду и запускает соответствующий directive / component для того же.

element.append($compile(text)($scope));
...