博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(2)前端AngularJS项目party_bid的第一部分总结
阅读量:6328 次
发布时间:2019-06-22

本文共 3549 字,大约阅读时间需要 11 分钟。

  hot3.png

party_bid是一个用于创建竞价活动的web app。即众所周知的拍卖,但是规则会有不同。这里所应用的前端框架是Google开发的AngularJS轻量级,因该说是轻轻量级的小巧精致的JS框架。当然所有的框架其实都是为了方便开发,避免重复工作,方便代码重用,减少各个模块之间的耦合度等等。一般的框架都比较烦,AngularJS是一种真正的不束缚开发者且简单易懂的框架。项目由Yoman生成,结合Rubymine IDE,日常代码提交等由Git管理,并且注册一个Trello帐号管理开发需求和进度。当然大前提是你已经搭配了Linux开发环境。如果有什么问题,请移步博客:
点击打开链接

        接下来会探讨一些开发中常见的小问题,请大家轻柔对待,不要对出现的低能问题暴躁抽打。

AngularJS的一些基本知识:

       1. 路由配置与添加JS文件至index.html

       2. $scope的运用

       3. ng-xx的运用

       4. URL传递参数

       5. 其他

接下来的讨论的问题也会分类到这些知识中。

1. 路由配置与添加JS文件至index.html

AngularJS的域变量(其实是对象)都会有一个$符号。function()里面会有一个参数$routeProvider ,是路由所需服务。ActivityMasterApp是整个AgularJS的应用名称,与index.html里面ng-app所引用的一样。

路由配置像这样子:

'use strict';angular    .module('ActivityMasterApp',[        'ngCookies',        'ngResource',        'ngSanitize',        'ngRoute'    ])    .config(function ($routeProvider){        $routeProvider            .when('/', {                templateUrl: 'views/main.html',                controller: 'MainController'            })     
    //当然还有其他页面            .otherwise({                redirectTo: '/'            });

这里刚刚写的时候最好参照着人家的写,否则会在细节上出问题。注意when的一个参数,字符串第一个元素不要忘了是分隔符'/',其实这个代表的是根。路由配置十分简单,几分钟就能搞定。

       主要是在index.html里面,route.js这个文件应该放在其他js之前,也就是说,route.js调用的controller要放在route.js后面,否则按序加载时会找不到其他的js文件。当然每次都应该要记得新建一个js都立即添加到index.html。这里我也出现过很多此问题。否则可能会出现XX is not a function 的错误。

2.$scope绑定的数据能在html和js间传递

   主要使用的有$scope.var = var_value; $scope.fn = function(params1,params2){//specific realizaion};

   这样的话,定义的变量或函数即可在页面上使用,如

   

$scope.back_to_activities_list = function () {            $location.path('/activities_list');        };

页面上即可使用:

back_to_activities_list()"                    ng-show="!is_list_null">                返回

变量的使用同理

3.ng-xx在controller和其对应的html之间数据是双向绑定的

   也就是说,只要一个地方更新了数据,另一个使用的地方就会即时更新。

   主要使用的有ng-model,ng-click,ng-disabled,ng-switch,ng-show,ng-repeat等。

   ng-model一般将文本输入绑定到一个变量上,这个变量的数据即文本数据,最重要的一点是:如果文本输入有任何变动,可以立刻通过读取这个变量来获得。意思是:文本内容会随时被检测。如下:

其他的同理操作。数据双向绑定是十分方便的。

4.URL传递参数也是十分简单的

   1.路由配置时这样写:

.when('/activities_list/:activityId',{                templateUrl: 'views/activities_list.html',                controller: 'ActivitiesListController'            })

注意到/:activityId了吧,这里就是传递的参数,也就是通过一个页面跳转到另一个页面时带过去的一个你需要的值,当然后面可以跟很多参数。

然后在另一个页面对应的js文件里,给function添加一个$routeParams服务,即:

app.controller('ActivitiesListController',function($scope,$routeParams,$location){

然后activityId会被绑定到$routeParams上,使用时:

  $scope.activityId = $routeParams.activityId;

这样你就可以使用前一个页面带过来的参数了。当然,你使用时只需要提取$routeParams.activityId即可。

5.双大括号{

{}}

  双打括号用在html中时,AngularJS会对其中的表达式进行运算,如果里面是函数,同理会执行这个函数。

如上文的input的ng-model绑定了activity_name这个变量,那么在p标签中间这样写:

{
{activity_name}}

就会实时显示您输入的文字;

还有喔,这个我感觉是神器:

当你在某种条件下才调用一个css 时,可以通过ng-switch,但是也可以更简单:

class="well clearfix btn-primary {
{set_yellow(activity)}}"

这里的set_yellow会根据情况返回一个字符串,这样的话,这里的class就可以动态加载了。set_yellow函数很简单:

$scope.set_yellow = function(activity){            if( $scope.active_activity == activity )            {                return 'yellow-list';            }            else            {                return ' ';            }        };

说起来其实这是一种构造字符串的方法,还有其他的技巧。比如你在传递参数的时候都是写的'/create_activity'之类的,如果你要传递一个变量呢,这个时候不能直接将你的变量名放在字符串中,否则会被解析会普通的字符,应该是

$location.path('/create_activity/'+$scope.activityId);

顺便说一下,ng-model=''XX''这里的引号是必须的,虽然不用引号也能加载正确,但是写法是不符合原则的。

总之,第一章非常简单,相信大家都会有所收获。

转载于:https://my.oschina.net/hyb007/blog/312498

你可能感兴趣的文章
php---PHP使用GD库实现截屏
查看>>
华为交换机802.1x动态下发vlan配置
查看>>
spring boot websocket + thy模版
查看>>
查看文件的真实路径
查看>>
如何开发一个自己的 RubyGem?
查看>>
职工系统150206308
查看>>
『中级篇』K8S最小调度单位Pod(62)
查看>>
ACE网络编程思考(一)
查看>>
数据结构的几种存储方式
查看>>
React源码学习——ReactClass
查看>>
JavaScript中几个相似方法对比
查看>>
如何恢复RAWD盘的资料
查看>>
物联网+云平台未来方向之一
查看>>
大作业项目
查看>>
北大校长王恩哥送给毕业学生的十句话
查看>>
IDC简报:2012年全球六大最佳主机服务器提供商
查看>>
HC3i论坛5月份热门资源30个
查看>>
mysqldump导出--数据+结构+(函数+存储过程)
查看>>
浏览器的渲染原理简介
查看>>
使用window.performance分析web前端性能
查看>>