AngularJS 可重用的模态 Bootstrap 指令

标签 angularjs twitter-bootstrap angularjs-ng-click

我是 AngularJS 的新手。我正在尝试实现一个可重用的模式 Bootstrap 。
这是 index.html:

<div ng-controller="mymodalcontroller">
    <modal lolo="modal1" modal-body='body' modal-footer='footer' modal-header='header' data-ng-click="myRightButton()"></modal>
    <a href="#{{modal1}}" role="button" class="btn btn-success" data-toggle="modal">Launch Demo Modal</a>
</div>

这是模块、 Controller 和指令:
var myModal = angular.module('myModal', []);
myModal.controller('mymodalcontroller', function ($scope) {
    $scope.header = 'Put here your header';
    $scope.body = 'Put here your body';
    $scope.footer = 'Put here your footer';

    $scope.myRightButton = function (bool) {
            alert('!!! first function call!');
    };
});
myModal.directive('modal', function () {
    return {
        restrict: 'EA',
        scope: {
            title: '=modalTitle',
            header: '=modalHeader',
            body: '=modalBody',
            footer: '=modalFooter',
            callbackbuttonleft: '&ngClickLeftButton',
            callbackbuttonright: '&ngClick',
            handler: '=lolo'
        },
        templateUrl: 'partialmodal.html',
        transclude: true,
        controller: function ($scope) {
            $scope.handler = 'pop'; 
        },
    };
});

这是html模板:
<div id="{{handler}}" class="modal fade">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                <h4 class="modal-title">{{header}}</h4>
            </div>
            <div class="modal-body">

                <p class="text-warning">{{body}}</p>

            </div>
            <div class="modal-footer">

                <p class="text-left">{{footer}}</p>

                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                <button type="button" class="btn btn-primary" data-ng-click="callbackbuttonright(), $event.stopPropagation()">Save changes</button>

            </div>
        </div>
    </div>
</div>

我希望“启动警报”按钮(在模式中)执行警报并且它做得很好。问题是它是在单击模式中的“取消”按钮和窗口关闭时启动的。有任何想法吗?
这是工作代码:Code谢谢你。

最佳答案

我建议你不要绑定(bind)到 ng-click .它还做了一些其他可以搞砸的神奇东西。您的部分中也存在语法错误。

我已经在我的 fork 中解决了这些问题:

http://plnkr.co/edit/2jK2GFcKSiKgMQMynD1R?p=preview

总结一下:

脚本.js :

更改您的 callbackbuttonright来自 ngClick 的绑定(bind)至ngClickRightButton

myModal.directive('modal', function () {
    return {
        restrict: 'EA',
        scope: {
            title: '=modalTitle',
            header: '=modalHeader',
            body: '=modalBody',
            footer: '=modalFooter',
            callbackbuttonleft: '&ngClickLeftButton',
            callbackbuttonright: '&ngClickRightButton',
            handler: '=lolo'
        },
        templateUrl: 'partialmodal.html',
        transclude: true,
        controller: function ($scope) {
            $scope.handler = 'pop'; 
        },
    };
});

index.html :

更改data-ng-clickdata-ng-click-right-button
<modal lolo="modal1" modal-body="body" modal-footer="footer" modal-header="header" data-ng-click-right-button="myRightButton()"></modal>

另一个小问题:

partialmodal.html :

更改,;
<button type="button" class="btn btn-primary" data-ng-click="callbackbuttonright(); $event.stopPropagation()">Launch Alert</button>

关于AngularJS 可重用的模态 Bootstrap 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22483979/

相关文章:

javascript - AngularJS:多次使用 ng-include

node.js - 检查应该定义一个 Controller

javascript - ng-class 在表的第一行有类并在 ng-click 上删除它

javascript - Angular ng-change 或 ng-click 无法选择

angularjs - Angular Materials - MD 内容滚动后的页脚

angularjs - 动态创建的元素不触发点击事件

html - 不能居中 Bootstrap 导航栏

html - 使用容器流体时第三列的对齐

javascript - 在部分中居中旋转木马(css 3d)

javascript - 在 AngularJS 中获取点击输入的位置