本文實例為大家分享了Angular JS頁麵切換及傳值的方法,供大家參考,具體內(nèi)容如下Angular JS頁邊切換及傳值
1. 基於ui-router的頁面跳轉(zhuǎn)傳參
(1 ) 在AngularJS的app.js中用ui-router定義路由,例如現(xiàn)在有兩個頁面,一個頁面(producers.html)放置了多個producers,點擊其中一個目標(biāo),頁面跳到對應(yīng)的producer頁,同時將producerId這個參數(shù)傳過去。
state('producers', { url: '/producers', templateUrl: 'views/producers.html', controller: 'ProducersCtrl' }) .state('producer', { url: '/producer/:producerId', templateUrl: 'views/producer.html', controller: 'ProducerCtrl' })
? ?
(2) 在producers.html中,定義點擊事件,例如ng-click="toProducer(producerId)",在ProducersCtrl值.go介面):
.controller('ProducersCtrl', function ($scope, $state) { $scope.toProducer = function (producerId) { $state.go('producer', {producerId: producerId}); }; });
? ?
(3) 在ProducerCtrl中,透過ui-router的$stateParams取得參數(shù)producerId,譬如:
轉(zhuǎn)傳參舉例:你有N個頁面,每個頁面都需要用戶填選信息,最終引導(dǎo)用戶至尾頁提交,同時後一個頁面要顯示前面所有頁面填寫的信息。這時候用factory傳參是比較合理的選擇(下面的程式碼是簡化版,依需求可以不同訂製):
.controller('ProducerCtrl', function ($scope, $state, $stateParams) { var producerId = $stateParams.producerId; });? ?
(1) 舉例:在一個單頁中定義了nested views,你希望讓所有子作用域都監(jiān)聽到某個參數(shù)的變化,並且作出相應(yīng)動作。例如一個地圖應(yīng)用,某個$state中定義元素input,輸入地址後,地圖要定位,同時另一個狀態(tài)下的列表要顯示出該位置週邊商舖的信息,此時多個$scope都在監(jiān)聽地址變化。
PS: $rootScope.$broadcast()可以非常方便的設(shè)定全域事件,並讓所有子作用域都監(jiān)聽到。
.factory('myFactory', function () { //定義factory返回對象 var myServices = {}; //定義參數(shù)對象 var myObject = {}; /** * 定義傳遞數(shù)據(jù)的set函數(shù) * @param {type} xxx * @returns {*} * @private */ var _set = function (data) { myObject = data; }; /** * 定義獲取數(shù)據(jù)的get函數(shù) * @param {type} xxx * @returns {*} * @private */ var _get = function () { return myObject; }; // Public APIs myServices.set = _set; myServices.get = _get; // 在controller中通過調(diào)set()和get()方法可實現(xiàn)提交或獲取參數(shù)的功能 return myServices; });
? ?
.factory('addressFactory', ['$rootScope', function ($rootScope) { // 定義所要返回的地址對象 var address = {}; // 定義components數(shù)組,數(shù)組包括街道,城市,國家等 address.components = []; // 定義更新地址函數(shù),通過$rootScope.$broadcast()設(shè)置全局事件'AddressUpdated' // 所有子作用域都能監(jiān)聽到該事件 address.updateAddress = function (value) { this.components = value.slice(); $rootScope.$broadcast('AddressUpdated'); }; // 返回地址對象 return address; }]);? ?
4. 基於localStorage或sessionStorage的頁面跳轉(zhuǎn)傳參
注意事項:透過LS或SS傳參,一定要監(jiān)聽變量,否則參數(shù)改變時,取得變數(shù)的一端不會更新。 AngularJS有一些現(xiàn)成的WebStorage dependency可以使用,譬如gsklee/ngStorage · GitHub,grevory/angular-local-storage · GitHub。以下使用ngStorage來簡述傳參過程:
(1) 上傳參數(shù)到localStorage - Controller A// 動態(tài)獲取地址,接口方法省略 var component = { addressLongName: xxxx, addressShortName: xxxx, cityLongName: xxxx, cityShortName: xxxx }; // 定義地址數(shù)組 $scope.components = []; $scope.$watch('components', function () { // 將component對象推入$scope.components數(shù)組 components.push(component); // 更新addressFactory中的components addressFactory.updateAddress(components); });
? ?
(2) 中聽鈴就是Angular頁間切換及傳值的4種方法的內(nèi)容,更多相關(guān)內(nèi)容請關(guān)注PHP中文網(wǎng)(www.miracleart.cn)!

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Angular.js是一種可自由存取的JavaScript平臺,用於建立動態(tài)應(yīng)用程式。它允許您透過擴展HTML的語法作為模板語言,以快速、清晰地表示應(yīng)用程式的各個方面。 Angular.js提供了一系列工具,可協(xié)助您編寫、更新和測試程式碼。此外,它還提供了許多功能,如路由和表單管理。本指南將討論在Ubuntu24上安裝Angular的方法。首先,您需要安裝Node.js。 Node.js是一個基於ChromeV8引擎的JavaScript運行環(huán)境,可讓您在伺服器端執(zhí)行JavaScript程式碼。要在Ub

angular中怎麼使用monaco-editor?以下這篇文章記錄下最近的一次業(yè)務(wù)中用到的 m??onaco-editor 在 angular 中的使用,希望對大家有幫助!

隨著網(wǎng)路的快速發(fā)展,前端開發(fā)技術(shù)也不斷改進與迭代。 PHP和Angular是兩種廣泛應(yīng)用於前端開發(fā)的技術(shù)。 PHP是一種伺服器端腳本語言,可以處理表單、產(chǎn)生動態(tài)頁面和管理存取權(quán)限等任務(wù)。而Angular是一種JavaScript的框架,可以用來開發(fā)單一頁面應(yīng)用程式和建構(gòu)元件化的網(wǎng)頁應(yīng)用程式。本篇文章將介紹如何使用PHP和Angular進行前端開發(fā),以及如何將它們

這篇文章繼續(xù)Angular的學(xué)習(xí),帶大家了解Angular中的元數(shù)據(jù)和裝飾器,簡單了解一下他們的用法,希望對大家有幫助!

這篇文章帶大家深入了解angular的狀態(tài)管理器NgRx,介紹一下NgRx的使用方法,希望對大家有幫助!

你知道 Angular Universal 嗎?可以幫助網(wǎng)站提供更好的 SEO 支援哦!

這篇文章跟大家分享一個Angular實戰(zhàn),了解一下angualr 結(jié)合 ng-zorro 如何快速開發(fā)一個後臺系統(tǒng),希望對大家有幫助!

身份驗證是任何網(wǎng)路應(yīng)用程式中最重要的部分之一。本教程討論基於令牌的身份驗證系統(tǒng)以及它們與傳統(tǒng)登入系統(tǒng)的差異。在本教程結(jié)束時,您將看到一個用Angular和Node.js編寫的完整工作演示。傳統(tǒng)身份驗證系統(tǒng)在繼續(xù)基於令牌的身份驗證系統(tǒng)之前,讓我們先來看看傳統(tǒng)的身份驗證系統(tǒng)。使用者在登入表單中提供使用者名稱和密碼,然後點擊登入。發(fā)出請求後,透過查詢資料庫在後端驗證使用者。如果請求有效,則使用從資料庫中獲取的使用者資訊建立會話,然後在回應(yīng)頭中傳回會話訊息,以便將會話ID儲存在瀏覽器中。提供用於存取應(yīng)用程式中受
