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

简介:

上节我们做了个 Hello AngularJS,这一节我开始构建用户界面和用户操作控制等。

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

本节我将使用 Bootstrap HTML, CSS, and JS 框架,相关知识请参考官网文档 Bootsrap Getting Started

本节代码获取

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

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

为首页添加顶部导航和左侧菜单(可选)

index.html (由于篇幅有限,咱们只例示关键部分,其它可参照代码库)

<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
 ...
            <a class="navbar-brand" ui-sref="front">Price Barcode</a>
...
</nav>
<div class="container-fluid">
    ...
                <li ui-sref-active="active"><a ui-sref="front">EAN13 价格条码</a></li>
    ...
        <div class="col-lg-10">
            <div class="view-container">
            <div class="view-frame" ui-view></div>
            </div>
        </div>
   ...
</div>

ui-sref, ui-sref-active, ui-view 请参见 UI Router API Reference

修改 scripts/route.js,申明我们的视图状态 front, 这里涉及到 UI Router State Manager

'use strict';
angular.module('priceBarcodeApp',[
    'ngTouch',
    'ngAnimate',
    'ui.router'
])
.config(function($stateProvider, $urlRouterProvider){
    $urlRouterProvider.otherwise('/front');
    $stateProvider.state('front',{
        url: '/front',
        templateUrl: 'front.html',
        controller: 'FrontCtrl'
    });
})
.controller('FrontCtrl',function($state,$scope){
    $scope.frontHeading = 'ENA13 价格条码生成器说明';
})
.run(function($rootScope, $state,$stateParams){
    $rootScope.$state = $state;
    $rootScope.$stateParams = $stateParams;
});
  1. ['ngTouch','ngAnimate','ui.router'] 为 AngularJS 的依靠注射(DI)
  2. .config(... 为我们的 MVC 配置,据此我需要一个命名为"FrontCtrl"的 Controller 和一个名称为"front.html"的页面文件作为视图 (partial view)。
  3. .controller(...为我们的 Controller 申明(按照 AngularJS 是最佳实践提示,可以分列 Controllers 到一个单独文件并通过 DI 引入,这里我们暂且申明在同一个文件中)

front.html

<hr/>
<ui-view/>
<div class="panel panel-info">
    <div class="panel-heading">{{frontHeading}}</div>
    ...
</div>

{{frontHeading}} Expression 将绑定 Scoping 变量 $scope.frontHeading

如果你的 Terminal 保持在 browser sync 状态,你将看到如下界面。这样我们就完成了一个基本的 MVC 模式和视图状态管理下导航控制

pricecode_illustration_07

:( 。我们调整一下 styles/main.scss 就行了。加入以下片段

body{
  padding-top: 70px;
}

由于我们的gulpfile 加入了 gulp.watch('./styles/**/*.scss', ['styles']); 这样我们只要改修并保存了相应文件 browser-sync 插件将会为我们自动加载新的内容。这个可以说是 WYSIWYG 的开发效果吧。:)

pricecode_illustration_08

front.html 添加用户输入表单和条形码条目列表后我们将看到如下界面。由于篇幅原因请参考代码库。(本节开头处 本节代码获取 有说明)

pricecode_illustration_09

下一节我们将进行 Controller 的编写,完成控制器,视图,与数据绑定等。待续...

目录
相关文章
|
前端开发 JavaScript .NET
AngularJS 实践:应用开发 :: ENA13 价格条码-(三)
上一节我们完成了开发工作流工具和环境准备,这一节我们将进行渐进式应用编程。熟悉 AngularJS 开发的同学请跳过。 上一节参考: AngularJS 实践:应用开发 :: ENA13 价格条码-(二) 添加 web 应用所依赖的 JavaScript, Stylesheet 引用 编辑 i
2412 0
|
6月前
|
JavaScript
基于Angular的简易在线购物车设计与实现
基于Angular的简易在线购物车设计与实现
70 3
|
3月前
|
前端开发 UED 开发者
深度剖析Angular表单控件:从模板驱动到响应式表单的最佳实践,带你全面掌握Angular表单处理机制,提升前端开发效率与用户体验的终极指南
【8月更文挑战第31天】本文通过代码示例详细介绍了 Angular 中两种主要的表单处理方式:模板驱动表单和响应式表单。模板驱动表单适用于简单场景,可在 HTML 模板中直接定义表单控件并实现数据绑定和验证。响应式表单基于 RxJS,提供更灵活的表单管理和复杂的逻辑处理。通过具体示例展示了每种方式的最佳实践,帮助开发者简化表单处理,提高开发效率和用户体验。
30 0
|
3月前
|
JavaScript 应用服务中间件 nginx
玩转现代化部署:Angular与Docker的完美邂逅——细说如何通过容器化技术让您的Angular应用飞速上线,实现一键部署的高效与便捷,彻底告别复杂流程
【8月更文挑战第31天】容器化技术已成现代软件部署标配,为应用提供一致的运行环境。本文通过具体示例详细介绍了如何使用 Docker 容器化 Angular 应用,包括创建 Angular 项目、编写 Dockerfile 以及构建和运行 Docker 镜像的过程,显著提升了部署效率与可靠性。无论在本地调试还是生产部署,Docker 均提供了高效解决方案。
45 0
|
设计模式 JavaScript 前端开发
12分布式电商项目 - AngularJS快速入门
12分布式电商项目 - AngularJS快速入门
31 0
|
设计模式 前端开发 JavaScript
11分布式电商项目 - AngularJS简介
11分布式电商项目 - AngularJS简介
49 0
|
开发工具 git
angularjs增删改查(2)--品牌管理
angularjs增删改查(2)--品牌管理
179 0
angularjs增删改查(2)--品牌管理
|
API
Angular 2.x折腾记 :(7) 初步了解表单:模板驱动及数据驱动及脱坑要点
表单在整个系统中的作用相当重要,这里主要扯下响应表单的实现方式。 首先需要操作表单的模块引入这两个模块; import { FormsModule, ReactiveFormsModule } from '@angular/forms';
169 0