2016-06-03 2 views
1

создать динамический HTML в HTML нг-клик не работает .. Мой код, как следоватьнг-клик не работает с динамическим HTML

window.imagePicker.getPictures(
      function(results) { 
for (var i = 0; i < results.length; i++) { 
        console.log('Image URI: ' + results[i] + " : " +i); 
        var tmpfileName = results[i].substr(results[i].lastIndexOf('/') + 1); 
        var fileName=i+"_"+tmpfileName 

        var image = document.getElementById('addArea'); 
        var DOM_img = document.createElement("img"); 
        DOM_img.setAttribute("id",fileName) 
        var cancel_img = document.createElement("img"); 
        cancel_img.src="img/Action-cancel-icon.png"; 
        cancel_img.setAttribute("id","cancel_"+fileName); 
        cancel_img.alt="no image"; 

        cancel_img.setAttribute("ng-click","test()"); 
        DOM_img.src=results[i]; 
        DOM_img.height="100"; 
        DOM_img.width="100"; 
        image.appendChild(DOM_img); 
        image.appendChild(temp); 
        convertImgToBase64URL(results[i], function(base64Img){ 

        $scope.images.push(base64Img); 

        console.log("Added... id i " + i); 


        }); 

       } 
}) 

$scope.test=function() 
{ 
alert("hello") 
} 

Я также попытался следующий код

$scope.myHtml+="<img src='"+results[i]+"' height=100px width=100px ng-click='test()'>"; 
<div id="addArea" ng-bind-html="myHtml"> 
</div> 

но ng-click не работает

Как я могу это решить?

ng-click не работает на изображении. Я просто пишу тестовую функцию, когда я нажимаю на изображение, ничего не произошло. Как это сделать? , пожалуйста, помогите мне решить эту проблему

+0

Вы не создаете html внутри контроллера. Это не угловой способ. Для этого лучше создать директиву. https://docs.angularjs.org/guide/directive –

+0

не могли бы вы также сообщить нам определение функции тестирования? –

ответ

1

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

$compile(cancel_img)($scope);

Не забывайте вводить $compile в ваш контроллер, чтобы вы могли его использовать:

someModule.controller('MyController', ['$scope', '$compile', function($scope, $compile) { 

    // Your code and the $compile goes here 

}]); 
+0

Я использовал это, но получил ошибку $ compile is undefined – user3855589

+0

@ user3855589 Вы ввели его? – sailens

+0

Можете ли вы предложить мне, как я могу это сделать? Я добавляю директиву компиляции, но не работал – user3855589

0

динамический html - это противоречивое понятие о том, как угловые работы.

, если все другие (2 способ связывания) означает неудачу, и вы действительно должны вводить HTML - Я хотел бы использовать ngBindHtml

0

По этой причине атрибут htm l, когда вы используете angularJs, такие как (ng-click, ng-show, ...), должно быть введите код html, потому что когда мы запускаем приложение, компилятор будет компилировать атрибут, такой как «ng-click», в javascript перед запуском app

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