$ compile в директивах

0

Эй, ребята, я планировал директиву, которую я делал, и это было бы всплывающее окно с таймером. В основном план состоял в том, чтобы передать объект, который мог бы настроить свойства для построения сообщения. Директива будет содержать html-шаблон, и мы добавим сообщение /html на основе свойств, установленных в службе. Например:

$rootScope.timer = 'recursive time fn goes here'

obj = {
message : '<span ng-click="connect()">Custom message goes here {{ timer }} </span>'
}

Popup.pop(obj);

и т.д. Точка вопроса заключается в $rootScope таймер $rootScope должен $rootScope (что просто сделать в контроллере), но директива устанавливает html как строку при интерполировании и не будет обновлять значение, если я прав. Мой вопрос заключается в том, как получить директиву для отображения таймера в директиве. мне нужно будет использовать $compile в directive? если да, то как? Кроме того, как мне передать функцию ng-click из этой службы, если я когда-нибудь понадобился? Извините, если его запутанные PLS задают вопросы.

  • 0
    Должно ли всплывающее окно быть везде? Я определенно пошел бы с сервисом как "alertPopUpService", который будет управлять всплывающими окнами вместо директивы.
  • 0
    да, хотя я так, но это должно быть везде, к сожалению. Допустим, мы должны были сделать это через директиву
Показать ещё 2 комментария
Теги:
using-directives

1 ответ

0

Попробуй это

//you can add your custom messge and time function returning value to the way u want 

// this is the basic way to do
var testing = angular.module('testing', [])

testing.directive('mydir', function ($compile, $rootScope) {
    
    var template = '<span ng-click="connect()">custom message</span>'
    return {

        restrict: 'E',

        link: function (scope, ele, attribute) {


            scope.connect = function () {

                alert('popup' +  new Date().getTime());
            }
            var content = $compile(template)(scope);

            ele.append(content)


        }

    }
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body>
    <div ng-app="testing">


        <mydir></mydir>
    </div>

</body>

Ещё вопросы

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