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

简介:

上节我们完成了基本用户交互工作,这一个我们将要完成用户表单输入,和数据列表等。相关联 AngularJS 的核心知识包括:Scopes 对象(What are Scopes),Data BindingController以及 UI Router State Manager等。
上节回顾 AngularJS 实践:应用开发 :: ENA13 价格条码-(四)

本节代码获取

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

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

控制器 FrontCtrl

在这个控制器我们要完成这几个任务:

  1. 收集用户的输入信息:前缀码,品类编号(分类编号)和名称,,价格。
  2. 根据用户的输入信息生成相应的 EAN13 条形码的十进制数字序列。(二进制的转换以及图形生成,我们将借助于 AngularJS 的插件 angluar-barcode完成。这个插件在前面我们已经包含了。"angular-barcode": "^0.0.4")
  3. 将用户输入的信息相应的EAN13 条形码的十进制数字序列放入列表中,用户可以添加或移除列表中的条目
  4. 提供[预览]操作,让用户预览上述列表中的条目所对应的条形码。

scripts/route.js

...
.controller('FrontCtrl',function($state,$scope,ean13gen){
    $scope.frontHeading = 'ENA13 价格条码生成器说明';
    $scope.priceCodeItems = [];
    $scope.prefix = '26';
    //1. 收集用户的输入信息:前缀码,品类编号(分类编号)和名称,,价格。
    $scope.genCode = function(prefix,kindCode,kindName,price){
        var item = {prefix:prefix,kindCode:kindCode,kindName:kindName,price:price};
        //2. 生成相应的 EAN13 条形码的十进制数字序列
        item.priceCode = ean13gen(item);
        //3. EAN13 条形码的十进制数字序列放入列表中
        $scope.priceCodeItems.push(item);
    };
    $scope.remove=function(idx){
        //3. 用户可以除列表中的条目
        $scope.priceCodeItems=_.remove($scope.priceCodeItems,function(n){
                return n === idx;
             });
    };
    //4. 提供[预览]操作,让用户预览上述列表中的条目所对应的条形码
    $scope.preview=function(){
        // go preview
    };
})
...

借助 Scopes 对象,为视图 front.html 提供数据和操作绑定。例如:ng-model="kindCode", ng-click="genCode(prefix,kindCode,kindName,price)" 等( Directives )。

ean13gen 为生成 EAN13 条形码的十进制数字序列的功能模块。是一个自定义的Factory Recipe 并通过 DI 完成模块服务或功能连接组合。
scripts/route.js

...
.factory('ean13gen',function(){
    function checksum(number){
        var result = 0;
        for(var i=0;i<12;i+=2){result+=parseInt(number[i]);}
        for(var i=1;i<12;i+=2){result+=parseInt(number[i])*3;}
        return (10 - (result % 10)) % 10;
    }
    return function(options){
        var pricetmpl = ['0','0','0','0','0','0'];
        var _strp = options.price+'';
        _strp=_strp.replace('.','');
        var diff = 6-_strp.length;
        for(var i=0;i<_strp.length;i++,diff++){
            pricetmpl[diff]=_strp[i];
        }
        var strCode= options.prefix+options.kindCode+pricetmpl.join('');
        return strCode+checksum(strCode);
    };
})
...

一般来说这些服务模块应单独写入一个服务模块文件,当前暂且编入同一个文件,便于阅读

检视用户表单输入及页面效果

如果没有启动 browser sync 请用下列命令进行启动

$ cd ~/webshop/pricebarcode
$ gulp serve

pricecode_illustration_10

如果出现问题,请通过 Chrome Developer Tools 进行排查

本节总结

  1. 我们基本完成了这个小应用的主要功能。下一节只要借助angular-barcode插件完成预览,并制作一个简单的打印就可以完工了。
  2. 这里未涉及 AngularJS 的单元测试。有兴趣的同学请自行参考Unit Testing
  3. AngularJS 与 Gulp 是否适用于你的项目,请多斟酌。很多概念和模式对于有经验的开发者来说已经是很熟悉的了。至于使用 AngularJS 进行开发不过是一种新的体验罢了。
  4. 就在编写这个系列博文的时候 AngularJS 2.0 已经进入 beta 版了。有兴趣的同学可以尝尝鲜。:)

待续...

目录
相关文章
|
前端开发 JavaScript .NET
AngularJS 实践:应用开发 :: ENA13 价格条码-(三)
上一节我们完成了开发工作流工具和环境准备,这一节我们将进行渐进式应用编程。熟悉 AngularJS 开发的同学请跳过。 上一节参考: AngularJS 实践:应用开发 :: ENA13 价格条码-(二) 添加 web 应用所依赖的 JavaScript, Stylesheet 引用 编辑 i
2487 0
|
机器学习/深度学习 存储 并行计算
ModelScope问题之训练报错设置参数如何解决
ModelScope训练是指在ModelScope平台上对机器学习模型进行训练的活动;本合集将介绍ModelScope训练流程、模型优化技巧和训练过程中的常见问题解决方法。
221 0
|
人工智能 自然语言处理 搜索推荐
6个好用的AI写作工具合集,各种AI写作软件类型超全整理!
AI生成营销文案、生成文章标题、改写润色内容、写作素材搜集...好用的AI写作工具有哪些?
6个好用的AI写作工具合集,各种AI写作软件类型超全整理!
|
存储 JSON 关系型数据库
深入了解MySQL中的JSON_ARRAYAGG和JSON_OBJECT函数
在MySQL数据库中,JSON格式的数据处理已经变得越来越常见。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它可以用来存储和表示结构化的数据。MySQL提供了一些功能强大的JSON函数,其中两个关键的函数是JSON_ARRAYAGG和JSON_OBJECT。本文将深入探讨这两个函数的用途、语法和示例,以帮助您更好地理解它们的功能和用法。
1034 1
深入了解MySQL中的JSON_ARRAYAGG和JSON_OBJECT函数
|
11月前
|
UED
【HarmonyOS——ArkTS语言】计算器的实现【合集】
【ArkTS语言-HarmonyOS】计算器的实现【合集】组件,点击等号后计算函数高效解析表达式并给出准确结果,达成核心功能要求。错误提示不够详尽,难以助力用户快速定位输入错误;响应式设计不足,在不同屏幕规格下适配性差。总体而言,本次实验已成功构建起基本功能框架,后续将针对上述问题深入探究优化方案,不断打磨细节,在完善计算器功能与提升用户体验的道路上持续精进,进而提升自身编程与应用开发的综合能力水平。利用按钮组件顺利完成布局设计,数字、运算符及功能按钮排列有序,操作逻辑清晰直观。
612 2
|
分布式计算 DataWorks 关系型数据库
MaxCompute 生态系统中的数据集成工具
【8月更文第31天】在大数据时代,数据集成对于构建高效的数据处理流水线至关重要。阿里云的 MaxCompute 是一个用于处理大规模数据集的服务平台,它提供了强大的计算能力和丰富的生态系统工具来帮助用户管理和处理数据。本文将详细介绍如何使用 DataWorks 这样的工具将 MaxCompute 整合到整个数据处理流程中,以便更有效地管理数据生命周期。
415 0
|
网络协议 网络安全 Android开发
公网使用SSH远程连接安卓手机Termux - Android手机服务器
公网使用SSH远程连接安卓手机Termux - Android手机服务器
694 0
公网使用SSH远程连接安卓手机Termux - Android手机服务器