[angular]服务之4$window

<!DOCTYPE html>
<html lang="en" ng-app="testServiceWindow">
<head>
    <meta charset="UTF-8">
    <title>测试$window服务</title>
    <script src="../frameWork/angular.js"></script>
    <script src="../testService/testServiceWindow.js"></script>
</head>
<body ng-controller="ctr1.normal">
   <button ng-click="ask(false,'您输入的内容不正确')">提示</button>
   <button ng-click="ask(true,'确定删除?')">询问</button>

<dir1>
    <controller-normal-title><span>我是title</span></controller-normal-title>
    <controller-normal-content><span>我是content</span></controller-normal-content>
</dir1>
</body>
</html>
/**
 * 摘要:由于service在angular中的地位非常重要,所以得认真对待。
 *      服务是一个单例对象,与应用同生死,能够注入,是controller之间通讯的主要工具。
 *      (通信还可以用$emit,$broadcast,$on的形式,但这个方式有局限,两个controller得有关系,以后研究).
 *      服务依赖provider,这个provider一般是module.
 * service实例分析第四篇:$window服务
 * Created by liyanq on 16/12/26.
 */

var testServiceWindow = angular.module("testServiceWindow",[]);
var serviceConfirmFun = function ($window) {
    return function (msg) {
        return $window.confirm(msg) ? console.log("确定"): console.log("取消");
    };
};
var serviceConfirmAndAlertFun = function ($window,serviceConfirm) {
    return function (isConfirm,msg) {
        return isConfirm?serviceConfirm(msg):$window.alert(msg);
    };
};
var ctr1Fun = function($scope,ca){
  $scope.ask = function (isConfirm,msg) {
      ca(isConfirm,msg);
  }
};
var dirFun = function (serviceConfirmAndAlert) {
    var dir = {};
    dir.restrict = "E";
    dir.replace = false;
    dir.transclude = {
        title: "?controllerNormalTitle",
        content: "?controllerNormalContent"
    };
    dir.template = "<div>我是模版的内容</div>" +
        "<div ng-transclude='title'></div>"+
        "<button ng-click='ask(false,str)'>提示</button>" +
        "<button ng-click='ask(true,str)'>询问</button>" +
        "<div ng-transclude='content'></div>";
    dir.link = function (scope) {
        scope.ask = function (isConfirm,msg) {
            serviceConfirmAndAlert(isConfirm,msg);
        };
        scope.str = "ControllerNormal的link执行了";
    };
    return dir;
};
testServiceWindow.service("serviceConfirm",["$window", serviceConfirmFun]);
testServiceWindow.service("serviceConfirmAndAlert",["$window","serviceConfirm", serviceConfirmAndAlertFun]);
testServiceWindow.controller("ctr1.normal",["$scope","serviceConfirmAndAlert",ctr1Fun]);
testServiceWindow.directive("dir1",["serviceConfirmAndAlert",dirFun]);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值