日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
整合jQueryMobile+AngularJs經(jīng)驗(yàn)談

兩者都是不錯(cuò)的JS編程框架,但是各自用途不同

1. jQuery Mobile提供了不錯(cuò)的圖形空間,以及依賴(lài)于jQuery本身,提供了不少空間操作的API

2. Angular沒(méi)有啥控件,但是是一個(gè)很好的JS的MVC框架,以及提供了空間的數(shù)據(jù)綁定功能。

于是,開(kāi)始有些開(kāi)源的項(xiàng)目把兩者整合在一起,比如

https://github.com/opitzconsulting/jquery-mobile-angular-adapter

但是有了這個(gè)adapter,兩者就可以很好的工作了么,NO。有些問(wèn)題,比如 兩者page加載方式是不一樣的,對(duì)于每個(gè)page, Angular是導(dǎo)航的使用route在需要的時(shí)候把page片段加載到瀏覽器的,URL類(lèi)似于http://angular.github.io/angular-phonecat/step-7/app/#/phones/motorola-xoom-with-wi-fi,注意在#后面才是真正的資源地址,然后初始化資源對(duì)應(yīng)的controller,這樣你可以初始化顯示數(shù)據(jù)。然后jQuery Mobile是需要一次性把所有page都加載到客戶(hù)端。這樣子的話(huà),如果如果在jQuery Mobile中你為每個(gè)page定義一個(gè)angular的controller,那么初始化你的angular controller的時(shí)候頁(yè)面還未顯示

我們需要一個(gè)設(shè)計(jì)實(shí)現(xiàn),為每個(gè)jQuery Mobile Page定義一個(gè)Angular的controller,每個(gè)controller完成對(duì)應(yīng)的page的數(shù)據(jù)綁定,如何實(shí)現(xiàn)

1. 頁(yè)面開(kāi)發(fā)使用jQuery Mobile, 我們?yōu)閞oot body定義一個(gè)root的angular controller比如

2. 導(dǎo)航問(wèn)題:導(dǎo)航使用jQuery Mobile的$.mobile.changePage而不使用angular的route,因?yàn)轫?yè)面使用的jQuery Mobile寫(xiě)的。頁(yè)面導(dǎo)航除了切換page,最重要的一點(diǎn)是初始化頁(yè)面數(shù)據(jù),而因?yàn)樵趈Query mobile下面,在頁(yè)面加載階段所有的controller都初始化了,你只能導(dǎo)航時(shí)在root controller里再去重新刷新顯示頁(yè)面的綁定數(shù)據(jù),這樣要求所有頁(yè)面的綁定數(shù)據(jù)需要在root controller里面定義,按照angular的規(guī)則,所有的子controller都會(huì)繼承這些數(shù)據(jù)定義。定義的時(shí)候***使用結(jié)構(gòu)而不是用primary type,這樣子controller可以直接飲用,比如定義一個(gè)shop的數(shù)據(jù)結(jié)構(gòu)

 
 
  1. $scope.shop = {};
  2. $scope.shop.catelogs = null;
  3. $scope.shop.advices = [];
  4. $scope.shop.child = [];
  5. $scope.shop.products = [];

3. 我往往會(huì)個(gè)導(dǎo)航定義一個(gè)單獨(dú)的控制器,使用它初始化page controller,比如

 
 
  1. angular
  2. .module(
  3. 'ngPageNav',
  4. [],
  5. [
  6. '$provide',
  7. function($provide) {
  8. $provide
  9. .factory(
  10. 'ngPageNavigator',
  11. [
  12. '$http',
  13. function($http) {
  14. function nav($scope,
  15. $http, action,
  16. data,
  17. ignoreStack) {
  18. .....
  19. }
  20. return {
  21. nav : nav,
  22. back : back
  23. };
  24.  
  25. }
  26. } ]);

} ]).value('name', 'ngPageNav');

3. 你調(diào)用$.mobile.changePage往往頁(yè)面綁定數(shù)據(jù)變了,但是頁(yè)面不會(huì)刷新page頁(yè)面,最簡(jiǎn)單的處理方式是往后臺(tái)send 一個(gè)dummy的請(qǐng)求。

4. 如果你在打開(kāi)你的jQuery Mobile的時(shí)候需要直接切換到某個(gè)page,請(qǐng)?jiān)谀愕膔oot controller里面監(jiān)聽(tīng)jqmInit

 
 
  1. $scope.$on("jqmInit",function() { 

網(wǎng)頁(yè)標(biāo)題:整合jQueryMobile+AngularJs經(jīng)驗(yàn)談
網(wǎng)址分享:http://www.5511xx.com/article/cddiceo.html