AngularJS使用指南0815江丽娜综述.docx

上传人:b****8 文档编号:10446483 上传时间:2023-02-11 格式:DOCX 页数:15 大小:167.71KB
下载 相关 举报
AngularJS使用指南0815江丽娜综述.docx_第1页
第1页 / 共15页
AngularJS使用指南0815江丽娜综述.docx_第2页
第2页 / 共15页
AngularJS使用指南0815江丽娜综述.docx_第3页
第3页 / 共15页
AngularJS使用指南0815江丽娜综述.docx_第4页
第4页 / 共15页
AngularJS使用指南0815江丽娜综述.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

AngularJS使用指南0815江丽娜综述.docx

《AngularJS使用指南0815江丽娜综述.docx》由会员分享,可在线阅读,更多相关《AngularJS使用指南0815江丽娜综述.docx(15页珍藏版)》请在冰豆网上搜索。

AngularJS使用指南0815江丽娜综述.docx

AngularJS使用指南0815江丽娜综述

AngularJS使用指南

作者:

江丽娜

关于modal的controller继承父画面的$scope。

modal引入用fromTemplate方式时,返回的是object ,所以与使用fromTemplateUrl时返回的promise不同,获取modal的使用应用下列方法。

angular.module('app').controller('BindCardAddCtrl',function($scope,$ionicModal){

$scope.modal=$ionicModal.fromTemplate('',{

animation:

'slide-in-up'

});

$scope.openModal=function(){

$scope.modal.show();

};

});

在coral中modal被抽象成components组件时,其挂载指令directive继承父controller的$scope设置为true。

angular.module('app').directive('bankList',function(){

return{

restrict:

'E',

scope:

true,

templateUrl:

'components/bank/list.html',

controller:

'BankListComponentCtrl',

};

});

然后,在组件的controller中就能使用父画面的$scope了。

angular.module('app').controller('BankListComponentCtrl',function($scope){

$scope.closeModal=function(){

$scope.modal.hide();

};

});

$http中JsonP的使用,以及后台的对接方法和本地调试

在js中可以这样调用jsonP,callback是jsonP的回调接口,必须给出

$http.jsonp('https:

//127.1.1.0/gateway-local/fundTrading?

callback=JSON_CALLBACK',{

params:

{

contractNo:

contractNoTxt,

fundCode:

fundCodeTxt,

}

}).success(function(data,status,headers,config){

console.log("data_success:

"+data.msg);

}).

error(function(data,status,headers,config){

});

服务器端可以这样设置

Stringcallback=request.getParameter("callback");

StringBuilderjsonp=newStringBuilder(callback);

out.print(jsonp.toString());

在没有服务器的情况下可以建立一个本地txt文件进行模拟访问,格式如下:

注意angular.callbacks._0()是与上面callback对应的回掉开头

angular.callbacks._0({

"fund":

[{

"fundName":

"股票基金",

"fundCode":

"001"

},{

"fundName":

"混合基金",

"fundCode":

"002"

}]

});

Js调用端可以这样写

$http.jsonp('/demo/fundlist.txt?

callback=JSON_CALLBACK').

success(function(data,status,headers,config){

}).

error(function(data,status,headers,config){

});

Coral中使用CFCA密码键盘指南

一、准备工作、引入文件

在coral的项目工程目录下app/libraries文件夹下放入cfcasip.min.js(密码键盘的js文件),随后在app文件夹下的index.html中手动加入引入js文件的代码。

记住要放在angularJS的js文件之前加载。

在app/style文件夹下加入密码键盘的css文件keyboard.css,并改名成_keyboard.scss

随后在main.scss文件中加入导入次文件的代码。

@import"keyboard";

2、使用方法

在需要加入密码键盘的html页面中放入如下代码:

none">

none">

注意:

每个input框需要自己各自的密码键盘div

js调用键盘示例代码如下:

注意:

此代码不能写在controller里面,必须单独写个js文件,放在app/libraries文件夹下,随后在index.html中手动加入引入js文件的代码

记住要放在angularJS的js文件之前加载。

varcompleteKeyboard=null;

varnumberKeyboard1=null;

functioninitCompleteKeyboard(id){

completeKeyboard=newCFCAKeyboard("CompleteKeyboard",KEYBOARD_TYPE_COMPLETE);

//设置回调

completeKeyboard.setDoneCallback(doneCallback);

//绑定控件ID

completeKeyboard.bindInputBox(id);

//隐藏密码键盘

completeKeyboard.hideKeyboard();

//设置随机数

if(CFCA_OK!

=completeKeyboard.setServerRandom("MTIzNDU2Nzg5MDk4NzY1NA=="))alert("setServerRandomerror");

//清除残留文字

completeKeyboard.clearInputValue(id);

//调用键盘显示初始化方法

initSipBoxComplete(id,completeKeyboard);

}

functionsetUpEvent(elem,eventType,handler){

console.log(handler);

vara=(elem.attachEvent?

elem.attachEvent(eventType,handler)

:

((elem.addEventListener)?

elem.addEventListener(eventType,handler,false):

null));

returna;

}

functioninitSipBoxComplete(id,completeKeyboard){

varsipBox=document.getElementById(id);

setUpEvent(sipBox,"click",function(event){

sipBox.blur();

completeKeyboard.bindInputBox(id);

if(numberKeyboard){

if(numberKeyboard.isShowing()){

numberKeyboard.hideKeyboard();

}}

completeKeyboard.showKeyboard();

});

}

在controller里面这样写,传入的参数就是页面上,需要挂上密码键盘的input标签的id;

initCompleteKeyboard("IDcode");

注意:

有多个input需要多个密码键盘div和多个实例化js代码。

3、打包方法

在coral工具目录下(不是coral工程目录),app\tasks文件夹下,打开build.js文件找到如下代码

去除ut,之后如下

随后在项目目录下执行coralbuild

会生在app下生成dist文件夹

注意生成完的文件夹下一开始没有libraries文件夹,需要手工从app下拷贝到app/dist目录下

4、调试

因为CFCA代码中使用this指向当前对象,但coral的livereload会和此有冲突,所以在coralserve启动后预览页面时会在控制台报错,但从生成的.tmp目录下直接打开运行不会报错。

所以angularJS和CFCA没有冲突。

进行调试时,可以直接打开.tmp目录下的页面进行调试,查看键盘弹出效果。

AngularJSPOST传参问题解决办法

AngularJS,传输数据使用Content-Type:

application/json和{"foo":

"bar","baz":

"moe"}这样的json序列。

使得Spring后台服务取不到值。

在angularJS的config里这样设置,使得传参方式变成x-www-form-urlencodedand之后,还需要转换序列的格式

$httpProvider.defaults.headers.post['Content-Type']='application/x-www-form-urlencoded';

Override$httpservice'sdefaulttransformRequest

$httpProvider.defaults.transformRequest=[function(data){

/**

*Theworkhorse;convertsanobjecttox-www-form-urlencodedserialization.

*@param{Object}obj

*@return{String}

*/

varparam=function(obj){

varquery='';

varname,value,fullSubName,subName,subValue,innerObj,i;

for(nameinobj){

value=obj[name];

if(valueinstanceofArray){

for(i=0;i

subValue=value[i];

fullSubName=name+'['+i+']';

innerObj={};

innerObj[fullSubName]=subValue;

query+=param(innerObj)+'&';

}

}elseif(valueinstanceofObject){

for(subNameinvalue){

subValue=value[subName];

fullSubName=name+'['+subName+']';

innerObj={};

innerObj[fullSubName]=subValue;

query+=param(innerObj)+'&';

}

}elseif(value!

==undefined&&value!

==null){

query+=encodeURIComponent(name)+'='

+encodeURIComponent(value)+'&';

}

}

returnquery.length?

query.substr(0,query.length-1):

query;

};

returnangular.isObject(data)&&String(data)!

=='[objectFile]'

?

param(data)

:

data;

}];

或者在请求POST的时候做如下设置:

$http({

method:

'POST',

url:

"api/v3/auth",

data:

{idType:

"0",idNo:

idNo},

headers:

{'Content-Type':

'application/x-www-form-urlencoded'},

transformRequest:

function(obj){

varstr=[];

for(varpinobj)

str.push(encodeURIComponent(p)+"="+encodeURIComponent(obj[p]));

returnstr.join("&");

},

}).success(function(data,status,headers,config){

console.log(data);

//thiscallbackwillbecalledasynchronously

//whentheresponseisavailable

}).

error(function(data,status,headers,config){

//calledasynchronouslyifanerroroccurs

//orserverreturnsresponsewithanerrorstatus.

});

 

AngularJS向父级发送消息的广播机制使用

在子级controller里用$emit向上发送广播给父级controller

$scope.$emit("toBindCardAddCtrl",bankItem);

在父级controller用$rootScope.$on接受广播。

$rootScope.$on("toBindCardAddCtrl",

function(event,msg){

console.log("parent",msg);

$scope.selectBankName=msg.bankName;

$scope.selectBankItem=msg;

});

注意:

广播是靠名字来播送的,子级传播给父级时,父级接受的名字也要是子级定义的名字toBindCardAddCtrl。

因为$scope虽然可以被子级继承,但子级改变$scope里的父级元素会不起作用,只能通过广播来反馈。

 

Coral中分离bower中的依赖js文件

这样做的目的是为了防止打包后js文件过大,超过UC等android端浏览器的限制值,造成加载白屏和失败。

比如就拿angular-pdf的依赖文件pdfjs-dist为例,其实主要是依赖build文件夹下的pdf.js和pdf.worker.js

但这两个文件加在一起就超过了1M,打包后和项目代码加在一起就超过了2M,需要做分离,不加入打包行列。

具体做法是如下步骤:

1、使用JS压缩工具Google的ClosureCompiler对js进行min化压缩。

2、工具下载地址:

3、打开cmd定位到ClosureCompiler所在文件夹输入命令行命令

java-jarcompiler.jar--jshello.js--js_output_filehello-compiled.js

其中hello.js是你要压缩的源文件名,hello-compiled.js是压缩后的文件名

在压缩过程中也许会因为要压缩的源文件是es5不支持es6语法的问题,出现如下报错:

只要在命令行的压缩命令里增加如下项就可以顺利压缩了:

java-jarcompiler.jar--jshello.js--js_output_filehello-compiled.js--language_out=ES5

 

将压缩好的js文件放到libraries下

把pdfjs-dist文件夹下的bower.json文件中的main字段的内容删除掉

变成这样

这样做的目的是不让coral自动把这两个未压缩的js文件添加到index.html中。

在index.html里增下压缩后的js文件路径,如下

这样就可以进行build了,最后不要忘记把libraries文件夹复制到打完的dist文件夹下。

 

Gitlib合并分支操作

有时为了UAT或者其他目的,需要一个项目开两个甚至更多的分支,为了同步分支代码,需要定时批量对代码进行分支同步(也就是由开发分支的代码合并到其他分支,并且其他分支的代码可以有独立的代码)

首先在项目目录下打开gitbash,出现命令行

注意:

一定要看清楚现在所处的分支是不是要被合并进来的分支,不然就用gitcheckout分支名来切换到所要被同步的分支。

确定是要在这个分支下同步其他分支合并进来,就使用gitmerge其他分支名来进行分支同步合并

合并完成后,这只是本地的分支合并,还要去把已合并的分支传到服务器上,可以用开发工具Intellijidea的push,也可以用命令行的gitpush提交。

(push之前要pull)

关于Cordova下打包全平台apk文件的配置

在cordova工程的目录下,新建一个build-extras.gradle的文件

文件里的内容如下

因为cordova工程里默认没有配置ext.cdvBuildMultipleApks这个变量,使得build.gradle里引用这个变量的地方的值都为null,从而不能进入到编译全平台的分支里。

ext.cdvBuildMultipleApks=false的目的是使cordova本身的打包配置忽略分平台设置。

Android和iOS原生调用AngularJS内函数方法

使用$window.test=function(){}把方法暴露出来,

android可以使用view.loadUrl("javascript:

test()");调用。

iOS可以使用

NSString*str=[self.webviewstringByEvaluatingJavaScriptFromString:

@"test();"];

并且在不同页面的controller里定义的同名方法可以独立使用,当前原生调用的是哪个方法由所在页面决定。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 管理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1