利用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="data: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")
    })

angular 使用dialog的经验的更多相关文章

  1. angular material dialog应用

    1. 打开弹窗的点击事件 project.component.html <button mat-icon-button class="action-button" (clic ...

  2. [转]Angular 4|5 Material Dialog with Example

    本文转自:https://www.techiediaries.com/angular-material-dialogs/ In this tutorial, we're going to learn ...

  3. 【翻译】React vs Angular: JavaScript的双向性

    翻译原文链接:https://blog.prototypr.io/react-vs-angular-two-sides-of-javascript-b850de22b413 我的翻译小站:http:/ ...

  4. Angular 2 to Angular 4 with Angular Material UI Components

    Download Source - 955.2 KB Content Part 1: Angular2 Setup in Visual Studio 2017, Basic CRUD applicat ...

  5. AngulaJS实战总结, 带你进入AngularJS世界(待续)

    使用AngularJS  进行Hybrid App 开发已经有一年多时间了,这里做一个总结. 一.AngularJS 初始化加载流程 1.浏览器载入HTML,然后把它解析成DOM.2.浏览器载入ang ...

  6. AngularJS 全局scope与Isolate scope通信

    在项目开发时,全局scope 和 directive本地scope使用范围不够清晰,全局scope与directive本地scope通信掌握的不够透彻,这里对全局scope 和 directive本地 ...

  7. angularJs 问题

    1. IE不能渲染指令中的 style="background-color",而chrome和firefox可以 <!DOCTYPE html> <html ng ...

  8. AngularJs学习笔记--directive

    原版地址:http://code.angularjs.org/1.0.2/docs/guide/directive Directive是教HTML玩一些新把戏的途径.在DOM编译期间,directiv ...

  9. 使用AngularJS 进行Hybrid App 开发已经有一年多时间了,这里做一个总结

    一.AngularJS 初始化加载流程 1.浏览器载入HTML,然后把它解析成DOM.2.浏览器载入angular.js脚本.3.AngularJS等到DOMContentLoaded事件触发.4.A ...

随机推荐

  1. springboot 项目中获取默认注入的序列化对象 ObjectMapper

    在 springboot 项目中使用 @SpringBootApplication 会自动标记 @EnableAutoConfiguration 在接口中经常需要使用时间类型,Date ,如果想要格式 ...

  2. KVM上如何让虚拟机支持虚拟化(kvm虚拟化的嵌套)

    http://blog.csdn.net/swimming_in_it_/article/details/53320141http://blog.csdn.net/wickedglory/articl ...

  3. golang channel select

    尝试多个channel同时触发时,select的表现: package main import ( "fmt" "time" ) func loop(ch ch ...

  4. 《转》12个Sublime Text使用技巧

    文为您提供Sublime Text编辑器的12个技巧和诀窍,深入挖掘这个看似简洁的代码编辑器,背后所隐藏的实现各种高级功能的无限可能. 1) 选择 以下是一些Sublime Text选择文本的快捷键: ...

  5. linux下安装Oracle时交换空间不足的解决方法

    摘:linux下安装Oracle时交换空间不足的解决方法 linux上安装Oracle时交换空间不足的解决办法 增加交换空间有两种方法: 严格的说,在系统安装完后只有一种方法可以增加swap,那就是本 ...

  6. zookeeper 入门(二)

    上一篇教程中重点讲解了如何部署启动一台zookeeper服务 本章中我们会重点讲解下如何 部署一套zookeeper的集群环境 基于paxos 算法,部署一套集群环境要求 至少 要有3个节点  并且节 ...

  7. [Laravel] 06 - Project: from Usercase to View

    故事背景 一.项目预览 From: https://www.imooc.com/video/12518 二.知识点 通过项目复习之前的重难点,在此列出并解决. /* implement */ 项目开始 ...

  8. vue.js 开发文档

    一.安装 node.js 首先需要安装node环境,可以直接到中文官网http://nodejs.cn/下载安装包. 只是这样安装的 node 是固定版本的,如果需要多版本的 node,可以使用 nv ...

  9. 12外观模式Facade

    一.什么是外观模式 Facade模式也叫外观模式,是由GoF提出的 23种设计模式中的一种.Facade模式为一组具 有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面.这个一致的简单的 ...

  10. DES ECB 模式 JAVA PHP C# 实现 加密 解密 兼容

    版本一: JAVA: import org.slf4j.Logger; import org.slf4j.LoggerFactory; import sun.misc.BASE64Decoder; i ...