AngularJS 实践:应用开发 :: ENA13 价格条码-(最后一里)

简介:

上节回顾 AngularJS 实践:应用开发 :: ENA13 价格条码-(五)

在这一个节我将完成这个小应用。并且附加一个简单的 Fade In & Fade Out 效果。这个将涉及 angular-animate 模块插件和一些 Sass

本节代码获取

如果已经 Clone 了代码库,你只需要执行 git checkout codetrip-3

$ git clone https://code.aliyun.com/passpile/pricebarcode.git
$ git checkout codetrip-3

实现价格条形码预览功能

完善 FrontCtrl$scope.preview 操作并添加 angular-barcode 模块依赖

scripts/route.js

'use strict';
angular.module('pbcodeApp',[
        ...,
    'barcode',
        ...
])
...
...
//4. 提供[预览]操作,让用户预览上述列表中的条目所对应的条形码
$scope.preview=function(){
        // 缓存列表数据
    $window.sessionStorage.setItem('priceCodeItems',angular.toJson($scope.priceCodeItems));
        // 调度视图路由状态
    $state.go('.preview');
};
...
添加状态管理下的视图路由 ( UI Routing )

scripts/route.js

...
.state('front.preview',{
        url: '/preview',
        templateUrl: 'preview.html',
        resolve:{
            'priceCodeItems':function($window){
                return angular.fromJson($window.sessionStorage.getItem('priceCodeItems'));
            }
        },
        controller: 'PreviewCtrl'
    });
...
  1. front.preview 申明视图路由状态
  2. resolvePreviewCtrl 提供数据依赖注射引用 priceCodeItems
添加 PreviewCtrlpreview.html 视图

scripts/route.js

...
.controller('PreviewCtrl',function($scope,priceCodeItems){
    $scope.priceCodeItems = priceCodeItems;
        // 显示条码数字
        $scope.barcodeOpts={displayValue: true},
    $scope.printout = function(){
        // to print
    };
})
...

preview.html

<a role="button" class="btn btn-default" ui-sref="^"><i class="fa fa-angle-left"></i> 返回</a>
<button type="button" class="btn btn-primary" ng-click="printout()"><i class="fa fa-print"></i> 打印输出</button>
<hr>
<div class="row">
    <div class="col-md-6 col-md-offset-2">
        <div class="panel panel-default" ng-repeat="item in priceCodeItems" >
            <div class="panel-body">
                <div><strong class="pull-right">[类别代码] {{item.kindCode}}</strong><strong>[类别名称] {{item.kindName}}</strong></div>
                <hr>
                <p><span style="font-size: 3em;padding-left:.9em;"><strong>{{item.price}} 元</strong></span></p>
                <div class="center-block"><barcode type="ean" string="{{item.priceCode}}" options="barcodeOpts"></barcode></div>
            </div>
            
        </div>
    </div>

</div>

<barcode type="ean" ... 为引用现成的 angular-barcode directive,注:引入模块依赖'barcode'

检视浏览器呈现

pricecode_illustration_11

至此,我们完成了这个小应用

PreviewCtrl$scope.printout 操作的编写就算是个练习吧,有兴趣的同学自由发挥吧

补充说明几个开发工作流指令

$ gulp #发布应用,将进行文件合并,代码压缩等
$ gulp serve:dist #预览发布过的应用
$ gulp styles #处理 Sass, autoprefixer等

如果有兴趣可以为我们的开发工作流增加 wiredep 工具

附:Sass 作为参考,就不详述了 :)
styles/main.scss

.view-container{
  position:relative;
}

.view-frame {
  &.ng-enter, &.ng-leave {
    background:white;
    position: absolute;
    top:0;
    left:0;
    right:0;
  }
  &.ng-enter{
    animation:0.5s fade-in;
    z-index:100;
  }
  &.ng-enter{
    animation:0.5s fade-in;
    z-index:99;
  }
}
@keyframes fade-in{
  from{opacity: 0;}
  to{opacity: 1;}
}
@keyframes fade-out{
  from{opacity: 1;}
  to{opacity: 0;}
}

结束

没有结束,一切才刚刚开始,匠人精神,学无止境 :)

目录
相关文章
|
前端开发 JavaScript .NET
AngularJS 实践:应用开发 :: ENA13 价格条码-(三)
上一节我们完成了开发工作流工具和环境准备,这一节我们将进行渐进式应用编程。熟悉 AngularJS 开发的同学请跳过。 上一节参考: AngularJS 实践:应用开发 :: ENA13 价格条码-(二) 添加 web 应用所依赖的 JavaScript, Stylesheet 引用 编辑 i
2487 0
|
Java Spring
ij社区版如何创建spring项目
如何在IntelliJ IDEA社区版中创建Spring项目,包括安装Spring Boot Helper插件的步骤和创建过程。
400 1
ij社区版如何创建spring项目
|
自然语言处理 关系型数据库 MySQL
match如何在mysql数据库里进行文本的相似度排序?
【9月更文挑战第1天】match如何在mysql数据库里进行文本的相似度排序?
407 1
|
机器学习/深度学习 存储 算法
【博士每天一篇论文-技术综述】Machine Learning With Echo State Networks 一篇系统讲解ESN知识的五星文章
本文是一篇技术报告,全面介绍了回声状态网络(ESNs)的数学模型、属性、意义、训练方法、深度ESN的发展、应用和局限性,并探讨了未来的研究方向,为理解ESNs在机器学习中的应用提供了系统性的综述。
433 3
|
人工智能 自然语言处理 搜索推荐
阿里云搜索开发工作台:快速搭建AI语义搜索与RAG链路的深度解析
阿里云搜索开发工作台凭借其丰富的组件化服务和强大的模型能力,为企业快速搭建AI语义搜索及RAG链路提供了有力支持。通过该平台,企业可以灵活调用各种服务,实现高效的数据处理、查询分析、索引构建和文本生成等操作,从而大幅提升信息获取与处理能力。随着AI技术的不断发展,阿里云搜索开发工作台将继续优化和完善其服务,为企业数字化转型和智能化升级注入更强动力。
400 0
|
监控 数据可视化 Java
掌握 JMeter 插件管理器:提升性能测试的利器
Apache JMeter 是一款强大的性能测试工具,其灵活性和扩展性使其在性能测试领域广受欢迎。JMeter 插件管理器(JMeter Plugins Manager)为用户提供了一个方便的平台来安装、更新和管理各种插件,从而大大扩展了 JMeter 的功能。
|
安全 网络安全 数据安全/隐私保护
网络信息安全之基于时间的安全模型(PDR和PPDR模型)
基于时间的安全模型是基于"**任何安全防护措施都是基于时间的,超过该时间段,这种防护措施是可能被攻破的**"这样的前提。该模型主要给出了信息系统的攻防时间表。攻击时间指的是在系统采取某种防守措施,通过不同的攻击手段来计算攻破该防守措施所需要的时间。防守时间指的是,对于某种固定攻击手法,通过采取不同的安全防护措施,来计算该防护措施所能坚守的时间。
1729 0
网络信息安全之基于时间的安全模型(PDR和PPDR模型)
|
网络协议 数据安全/隐私保护 网络架构
TCPIP vs OSI模型:网络通信的两种参考模型有哪些不同?
TCP/IP模型和OSI模型都是用于描述计算机网络通信的参考模型,它们在层数和定义、协议和应用层协议、层次结构和数据交换方式等方面都存在不同。