一、 關于angularjs的加載方式:
創(chuàng)新互聯(lián)一直秉承“誠信做人,踏實做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務為基礎,以質量求生存,以技術求發(fā)展,成交一個客戶多一個朋友!為您提供成都網(wǎng)站設計、成都網(wǎng)站制作、成都網(wǎng)頁設計、小程序制作、成都網(wǎng)站開發(fā)、成都網(wǎng)站制作、成都軟件開發(fā)、app開發(fā)定制是成都本地專業(yè)的網(wǎng)站建設和網(wǎng)站設計公司,等你一起來見證!
啟動方式:
一個angular應用運行起來的“入口”,有兩方式:
1)在元素上添加ng-app指令(暫時無需關心什么意思);ng-app可以有屬性值(ng-app="app"),這樣 的話就需要咱們去寫一個名為app的module了,后續(xù)詳解。
---- 暫時不推薦使用這種方式啟動angular
2) 不去指定ng-app,通過JS代碼執(zhí)行:angular.bootstrap(element, ['模塊名'...]),一樣也是可以 啟動的
----推薦使用這種方式來啟動angular.
二:Bootstrap:Angular的初始化
利用ngapp標示你需要自動引導應用程序的根節(jié)點,一般典型為html tag。在DOMContentLoaded事件觸發(fā)Angular會自動尋找ngapp作為應用的根節(jié)點,如果找到則會進行如下操作:
加載module(模塊)相關directive(指令)。
創(chuàng)建應用程序injector(Angular的注入機制).
編譯處理ng-app作為根節(jié)點的指令。這里允許你自定義選擇DOM節(jié)點作為應用根節(jié)點。
如果想對對初始化有更多的控制權,可以采用自定義手動引導方法初始化代替angular的自動初始化。比如你需要在angular編譯模板之前做一些事情,比如改變模板某些內容。手動引導方式將會如下:
<!doctypehtml>
<htmlxmlns:ng="http://angularjs.org">
<body>
Hello {{'World'}}!
<scriptsrc="http://code.angularjs.org/angular.js"></script>
<script>
angular.element(document).ready(function() {
angular.bootstrap(document);
});
</script>
</body>
</html>
如何使用angular來開發(fā)程序
首先在對應的頁面引入:angular-1.2.0.min.js
接著引入sea.js(SeaJS是一個遵循CommonJS規(guī)范的JavaScript模塊加載框架,可以實現(xiàn)JavaScript的模塊化開發(fā)及加載機制,如requre和define指令都是seajs中的);
例子如下:
首頁:index.html文件
<!DOCTYPE html>
<html>
<head>
<meta content="text/html;charset=utf-8">
<title>Insert title here</title>
<script type="text/javascript"src="angular-pa-1.2.0.min.js"></script>
<script type="text/javascript"src="sea.js"></script>
</head>
<body>
<div ng-controller="HelloController">
<input ng-model="greeting.text">
<p>`greeting`.`text`,World</p>
<table ng-show="greeting.aaa">
<tr ng-repeat="item in items">
<td ng-click="apply()">{{$index+1}}</td>
<td ng-click="goEoa()">`item`.`name`</td>
<td>`item`.`age`</td>
</tr>
</table>
</div>
<!—有了define等模塊定義規(guī)范的實現(xiàn),我們可以開發(fā)出很多模塊.但光有一堆模塊不管用,我們還得讓它們能跑起來,使用seajs.use-->
<!—seajs.use用來在頁面中加載模塊,通過use方法可以在頁面中加載任意模塊-->
<script data-language="javascript">
seajs.use('./controllers');
</script>
</body>
</html>
Controllers.js文件
//使用define來定義模塊
define(function(require,exports){
var myAppModel =angular.module('myAppModel',[]);
//將對應的服務引入進來,并使用define將其定義到'myAppModel'model上。
require('backwardEoaPageService').define(myAppModel);
require('./backwardEoaPageDirective.js').extend(myAppModel);
myAppModel.controller('HelloController',function($scope,
backwardEoaPageService){
$scope.greeting={
text:'Hello',
youCheckedit:true,
aaa:true
};
$scope.items=[{name:'張三1',age:'1'},
{name:'張三2',age:'2'},
{name:'張三3',age:'3'},
{name:'張三4',age:'4'},
{name:'張三5',age:'5'},
{name:'張三6',age:'6'}];
$scope.apply=function(){
backwardEoaPageService.apply();
};
$scope.goEoa=function(){
backwardEoaPageService.goEoa();
};
});
//備注:使用angular.bootstrap將model:myAppModel加載到document,就不用在html頁面上使用ng-app了
angular.bootstrap(document,['myAppModel']);
});
backwardEoaPageService.js文件;
define(function(require, exports){
//exports對外公布一個入口
exports.define= function(md) {
md.factory('backwardEoaPageService',['$http',function($http){
varservice = {
apply: function(backwardCancelPlyDTO,handle){
var url ='servlets/servlet/HelloWorldExample';
$http({method:'POST',url:
url,data:backwardCancelPlyDTO})
.success(function(data, status,
headers){
handle(data);
});
},
goEoa: function(backwardCancelPlyDTO,handle){
alert("goEoa");
}
};
returnservice;
}]);
};
});
backwardEoaPageDirective.js指令文件
define(function(require, exports){
exports.extend=function(md){
//下面指令的定義中,對應的紅色參數(shù)要一一對應,否則無法注入對象;
//或者前面可以不要,直接寫function中的參數(shù)即可
md.directive('backwardEoaPage',
['$http','backwardEoaPageService',function($http,backwardEoaPageService){
return {
restrict:'A',
templateUrl:'./backwardEoaPage.html',
scope: {
isShow:'='//這是指令對外暴露的接口,=表示是值傳遞
},
link:function(scope, element,attrs){
scope.model = {
applyReason :null
};
scope.upload =function(){
varbackwardCancelPlyDTO={message:"aaaa"};
backwardEoaPageService.apply(backwardCancelPlyDTO,function(data){
alert(data.message);
});
}
}
};
}]);
};
});
angularjs的post請求,springmvc解析不了
.)在angularJS中與遠程HTTP . method {String} 請求方式e.g."GET"."POST" . params {key,value} 請求參數(shù),將在URL上被拼接成?key=value . data {key,value} 數(shù)據(jù),將被放入請求內發(fā)送至服務器 參考文檔:http://www.cnblogs.com/sytsyt/p/3297872.html angularjs的post訪問方法: $http({method:'POST', url: url,data:backwardCancelPlyDTO}) .success(function(data, status, headers){ handle(data);} ); 對于這樣的請求,springmvc的controller如何處理; a)在對應的入?yún)ean前面添加@RequestBody注解---因為angularjs post參數(shù)值放到請求Body中了,而且入?yún)⑹菍膉son數(shù)據(jù),需要進行處理,才能封裝到Bean中; @Controller publicclassTestController { @RequestMapping("/test/login.do") publicvoidtestLogin(@RequestBody User user, HttpServletResponse response) { response.setContentType("application/json;charset=utf-8"); PrintWriter out = response.getWriter(); if("admin".equals(user.getUserName())&&"admin".equals(user.getPassWord())){ out.write("{\"message\":\"登陸成功\"}"); }else { out.write("{\"message\":\"登陸失敗\"}"); } } } 1、必須是POST方式 備注:如果使用jquery的ajax進行請求,后臺就不需要使用@RequestBody注解進行處理了;---這就是angular與jquery的不同; b)還有就是 angularjs中的post請求參數(shù)必須使用data進行傳遞;不能使用params(供get專用的) $http({method:'POST', url: url, data:backwardCancelPlyDTO}) $http({method:'GET', url: url,params:backwardCancelPlyDTO}) springmvc接收json格式的數(shù)據(jù)在xml配置文件中還需要進行如下的配置 下面的配置是對方法的json數(shù)據(jù)進行處理; <beanid="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/> <beanclass="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <propertyname="messageConverters"> <list> <reflocal="mappingJacksonHttpMessageConverter"/> </list> </property> </bean> 上面配置需要的jar包在下面下載: http://jarfiles.pandaidea.com/jackson.all.html 請下載jackson-all-1.8.3.jar,因為1.9.0有問題; springmvc輸出json格式的數(shù)據(jù),供ajax使用,步驟如下: 在AnnotationMethodHandlerAdapter處理類中需要注入如下的轉換器 org.springframework.http.converter.json.MappingJacksonHttpMessageConverter 2)方法的返回值使用如下的注解這樣就可以了; @ResponseBody @RequestMapping("/test/login.do") public User testLogin(@RequestBody User user,HttpServletResponse res, HttpServletRequest req) {
分享題目:關于angularjs的加載方式
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供面包屑導航、網(wǎng)站設計公司、電子商務、企業(yè)網(wǎng)站制作、網(wǎng)站排名、動態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源:
創(chuàng)新互聯(lián)
2、前臺需要設置'contentType'
3、前臺JSON對象要轉成字符串,如JSON.stringify(JsonObject),
4、后臺參數(shù)得用@RequestBody注解
5、如果你是異步處理返回的JSON值(比如Map等)則@ResponseBody是需要的
6、這個時候,你的JsonObject就會自動轉為queryVO這個Bean
網(wǎng)站URL:http://jinyejixie.com/article6/gdpsog.html