Как вставить HTML вместе с функцией onclick в представление angularjs

Я пытаюсь визуализировать HTML в моем представлении, и я хочу вставить вызов функции внутри этого HTML, но не понимаю, как я могу это сделать. Вот мой JavaScript:

        angular.forEach($scope.patients, function (patient) {
         tableRow = tableRow + [
             '<div data-ng-click="popup("+patient+")">',
                 '<div class="name-container">+patient.name+</div>',

             '</div>'].join('');
    });
    $scope.renderHTML =$sce.trustAsHtml(tableRow);

    $scope.popup = function(patient) {
    ...

};

HTML:

  <div data-ng-bind-html="renderHTML">
             </div>

Можно ли таким способом добавить объект пациента в функцию popup()?

1 ответ

HTML: $eval помогает оценить различные угловые выражения

<div data-ng-bind-html="$eval(renderHTML)">
             </div>

JS

Это может помочь вам,

angular.forEach($scope.patients, function (patient) {
         tableRow = tableRow + [
             '<div data-ng-click="popup("'+patient+'")">',
                 '<div class="name-container">'+patient.name+'</div>',

             '</div>'].join('');
    });
    $scope.renderHTML =$sce.trustAsHtml(tableRow);

    $scope.popup = function(patient) {
    ...

};

Вы передаете объект пациента во всплывающей функции, я думаю, что он может не работать. Если это не работает, попробуйте использовать JSON.stringify

Обратитесь по следующей ссылке для получения дополнительной информации Как заставить ng-bind-html компилировать код angularjs

Предложение:

Попробуйте использовать директиву ng-repeat вместо angular.forEach. Я думаю, что вы можете легко выполнить ваши требования, используя ng-repeat, для справки:

 <div ng-repeat="patient in patients">
        <div data-ng-click="popup(patient)">
           <div class="name-container">patient.name</div>
           </div>
        </div>
    </div>

ОБНОВЛЕНО:

Попробуй это

angular.forEach($scope.patients, function(value,key){
         tableRow = tableRow + [
             '<div data-ng-click="popup("'+patients[key]+'")">',
                 '<div class="name-container">'+patients[key].name+'</div>',

             '</div>'].join('');
    });
    $scope.renderHTML =$sce.trustAsHtml(tableRow);

    $scope.popup = function(patient) {
    ...

};
Другие вопросы по тегам