2015-06-22 2 views
0

У меня есть диалог, который используется в трех сценариях на той же странице. Я создал контроллер, аналогичный приведенному ниже:AngularJS & Bootstrap Modal - загрузочный шаблон внешнего контроллера

var modalInstance = $modal.open({ 
    templateUrl: 'myModalContent.html', 
    controller: 'ModalInstanceCtrl', 
    size: size, 
    resolve: { 
    items: function() { 
     return $scope.items; 
    } 
    } 
}); 


<script type="text/ng-template" id="myModalContent.html"> 
    <div class="modal-header"> 
     <h3 class="modal-title">Im a modal!</h3> 
    </div> 
    <div class="modal-body"> 
     <ul> 
      <li ng-repeat="item in items"> 
       <a ng-click="selected.item = item">{{ item }}</a> 
      </li> 
     </ul> 
     Selected: <b>{{ selected.item }}</b> 
    </div> 
    <div class="modal-footer"> 
     <button class="btn btn-primary" ng-click="ok()">OK</button> 
     <button class="btn btn-warning" ng-click="cancel()">Cancel</button> 
    </div> 
</script> 

Проблема в том, что, поскольку этот диалог используется в 3-х разных частях одной и той же страницы, у меня есть проблема с шаблоном. Когда я помещаю html-шаблон вне контроллера, в самом конце страницы html, он терпит неудачу и дает мне 404.

Однако я не хочу повторять один и тот же фрагмент HTML в трех местах в такой же страница. Может ли кто-нибудь сказать мне, есть ли другой способ вызвать шаблон, который находится вне контроллера?

ответ

2

Хороший способ повторного использования шаблона - поместить его в отдельный файл html и поместить его URL-адрес в templateUrl. Таким образом, $modal может получать его с сервера каждый раз, когда это необходимо.

+0

Это был бы идеальный сценарий. Тем не менее, система, над которой я работаю, все работает в 1 html-файле, поэтому мне было интересно узнать, могу ли я иметь этот html-фрагмент в теге скрипта, где-то внизу страницы, вне контроллера, чтобы он использовался во всех 3 случая. Есть ли способ сказать контроллеру использовать этот кусок HTML, который находится за его пределами, но на той же странице? – user1809790

+1

Хорошо, я виноват! Вы помещали этот шаблон в '$ rootElement'? – alisabzevari

+0

Спасибо большое! это была моя проблема. Шаблон находился за пределами $ rootElement – user1809790

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