博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
angular 使用dialog的经验
阅读量:5051 次
发布时间:2019-06-12

本文共 2069 字,大约阅读时间需要 6 分钟。

利用angular在近期的工作中使用了dialog的方式,总结下经验

由于dialog显示的内容不同,需要用到angular 的ng-include加载不同的文件

1 dialog利用指令的方式

app.directive('dialog', function() {

  return {
    restrict: 'AE',
    scope: {
      loadData: '='
    },
    template: '<div ng-show="loadData.isShow" class="dialog-main">' +
          ‘<div class="dialog-box">' +
            '<div class="dialog-content"><i class="close-button" ng-click="closeDialog()"><img src="image/close.png" /></i>' +
            '<div ng-include="loadData.template.url"></div>' +   // 注意下利用ng-inclue加载不同的页面文件
          '</div>’ +
        ’</div>' ,

    replace: true,

    link: function (scope, element, attr) {
      scope.closeDialog = function(){
        scope.loadData.isShow = false;
      }
    }
  }
});

2 使用dialog指令的方式

因为需要的dialog页面不少,所以考虑dialog组件直接放到$rootScope环境中,

<div ng-app="zswq">

  <dialog load-data="dialog_data"></dialog>
  <div app-header-area></div>
  <div class="content flex" >
</div>

3 弹出dialog的方式

  可点击按钮弹出,利用ng-click="dialog_data.isShow=!data.isShow; dialog_data.data={id:0,unitName:''};dialog_data.template.url='/view/template/content/manage/employee/add_employee.html' ”

  好的方式是写在逻辑中,ng-click="getDialog()"  ,然后在getDialog函数中 用 dialog_data.isShow=!data.isShow; dialog_data.data={id:0,unitName:''};dialog_data.template.url='/view/template/content/manage/employee/add_employee.html'

4  注意刷新的问题

  例如公司编辑页面,公司不同,就需要传递的值就不同,放到 dialog_data.data对象中(看第3条),通过利用 dialog_data.data取传递。
  但是注意刷新的问题,编辑不同的公司信息,需要弹出的是一个dialog,但是因为dialog中加载的是没有改变的静态页面,不存在重新加载,页面的数据显示的是原来的(虽然已经更改了dialog_data.data对象),所以就要考虑在弹出dialog的事件中触发下更新的函数

  因为dialog处于$rootScope环境,所以$rootScope中$watch监听dialog_data.data对象的改变,如果改变,就向下广播$broadcast一个函数dialogWinNeedReload,位于dialog的那个页面接收广播,更改绑定数据,重新请求

    $scope.$on("dialogWinReload",function(){

      $scope.queryCompanyData = {
        "cId":$rootScope.dialog_data.data.cid,
        "token":$cookies.get("token")
        }
      $scope.initCompany();
    });

    

    $rootScope.$watch("dialog_data.data",function(){

      $rootScope.$broadcast("dialogWinReload")
    })

转载于:https://www.cnblogs.com/FineDay/p/7291099.html

你可能感兴趣的文章
jquery_扩展
查看>>
Kubernetes Master节点灾备恢复操作指南---升级版
查看>>
nginx访问jupyter
查看>>
四大主流云平台对比--CloudStack, Eucalyptus, vCloud Director和OpenStack。
查看>>
python String模块
查看>>
名声远扬的EXCHANGE2010,有多少内存我用不完?
查看>>
Tomcat打印运行时日志(控制台),访问日志,启动日志
查看>>
jboss配置数据源
查看>>
Python 面向对象4-继承
查看>>
2017-2018-1 20179215《Linux内核原理与分析》第五周作业
查看>>
iOS开发常用的10个Xcode插件
查看>>
[DevExpress] GridControl添加右键菜单
查看>>
centos 6.4 下载链接地址-官方最新
查看>>
{每日一题}:四种方法实现打印feibo斐波那契数列
查看>>
设为首页,加入收藏 兼容各大浏览器
查看>>
MFC笔记8
查看>>
ECSHOP商品赠送积分也能输入小数
查看>>
用apt-get install一个软件的时候出现错误: 无法解析或打开软件包的列表或是状态文件...
查看>>
后台数组传到前台
查看>>
类型转换
查看>>