加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

AngularJS模态窗口指令

发布时间:2020-12-17 07:34:47 所属栏目:安全 来源:网络整理
导读:我正在尝试为Twitter Bootstrap Modal制作一个指令angularJS指令. var demoApp = angular.module('demoApp',[]);demoApp.controller('DialogDemoCtrl',function AutocompleteDemoCtrl($scope) { $scope.Langs = [ {Id:"1",Name:"ActionScript"},{Id:"2",Name
我正在尝试为Twitter Bootstrap Modal制作一个指令angularJS指令.
var demoApp = angular.module('demoApp',[]);

demoApp.controller('DialogDemoCtrl',function AutocompleteDemoCtrl($scope) {
    $scope.Langs = [
        {Id:"1",Name:"ActionScript"},{Id:"2",Name:"AppleScript"},{Id:"3",Name:"Asp"},{Id:"4",Name:"BASIC"},{Id:"5",Name:"C"},{Id:"6",Name:"C++"}
    ];

    $scope.confirm = function (id) {
        console.log(id);
        var item = $scope.Langs.filter(function (item) { return item.Id == id })[0];
        var index = $scope.Langs.indexOf(item);
        $scope.Langs.splice(index,1);
    };
});

demoApp.directive('modal',function ($compile,$timeout) {
    var modalTemplate = angular.element("<div id='{{modalId}}' class='modal' style='display:none'  tabindex='-1' role='dialog' aria-labelledby='myModalLabel' aria-hidden='true'><div class='modal-header'><h3 id='myModalLabel'>{{modalHeaderText}}</h3></div><div class='modal-body'><p>{{modalBodyText}}</p></div><div class='modal-footer'><a class='{{cancelButtonClass}}' data-dismiss='modal' aria-hidden='true'>{{cancelButtonText}}</a><a ng-click='handler()' class='{{confirmButtonClas}}'>{{confirmButtonText}}</a></div></div>");
    var linkTemplate = "<a href='#{{modalId}}' id= role='button' data-toggle='modal' class='btn small_link_button'>{{linkTitle}}</a>"

    var linker = function (scope,element,attrs) {
        scope.confirmButtonText = attrs.confirmButtonText;
        scope.cancelButtonText = attrs.cancelButtonText;
        scope.modalHeaderText = attrs.modalHeaderText;
        scope.modalBodyText = attrs.modalBodyText;
        scope.confirmButtonClass = attrs.confirmButtonClass;
        scope.cancelButtonClass = attrs.cancelButtonClass;
        scope.modalId = attrs.modalId;
        scope.linkTitle = attrs.linkTitle;

        $compile(element.contents())(scope);
        var newTemplate = $compile(modalTemplate)(scope);

        $(newTemplate).appendTo('body');

        $("#" + scope.modalId).modal({
            backdrop: false,show: false
        });
    }

    var controller = function ($scope) {
        $scope.handler = function () {
            $timeout(function () {
                $("#"+ $scope.modalId).modal('hide');        
                $scope.confirm();            
            });
        }
    }

    return {
        restrict: "E",rep1ace: true,link: linker,controller: controller,template: linkTemplate
        scope: {
            confirm: '&'
        }
    };
});?

这是JsFiddle示例http://jsfiddle.net/okolobaxa/unyh4/15/

但是handler()函数与页面上的指令一样多次运行.为什么?什么是正确的方法?

在 AngularStrap中,Bootstrap3有一个可用的本机实现,它利用了AngularJS v1.2中的ngAnimate

>演示:http://mgcrea.github.io/angular-strap/##modals

您可能还想结帐:

>资料来源:https://github.com/mgcrea/angular-strap/blob/master/src/modal/modal.js
>普兰克:http://plnkr.co/edit/vFslNmBAoKPVXtdmBXgv?p=preview

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读