有多種方法可以在AngularJS應用程序中實現模態,包括流行的Angular-Dialog服務和官方的Angular-UI Bootstrap模式。在本文中,我將分享我想使用另一項Angular-UI服務的Angular-ui-Router。
鑰匙要點- 模態可以被視為應用程序的獨特狀態,因此使用狀態管理工具在不同的模態狀態之間進行導航是合乎邏輯的。
- 將模式視為提供諸如嵌套狀態,回調,狀態參數和依賴項注入以及URL路線之類的好處。它還允許在應用程序中的不同模態之間平穩導航。
- 在狀態中進行思考
- >這種方法背後的核心思想是模式實際上是您應用程序的獨特狀態。考慮一個電子商務網站。當您單擊“添加到購物車”按鈕時,一個模態會彈出,要求您登錄。您輸入詳細信息並單擊“繼續”,這顯示了您的另一種帶有購物車詳細信息的模式。
- > >您剛剛穿越了許多剛剛以模態的狀態。如果我們將模態視為狀態,那麼使用狀態管理工具往返於不同的模態狀態。
>
>讓我們保持簡單。首先,我們將安裝UI-Router並將其添加到Angular App。1。創建一個簡單的html頁
我們將首先創建一個index.html文件,其中包含以下內容:
> jQuery已包括以後的某些DOM工作。
> 除了包括最新版本的Angular本身之外,我還提供了Angular UI路由器,CSS文件(當前為空),當然還有我們的App的主JavaScript文件。接下來,讓我們看一下。2。創建您的Angular App
此時,><span><span>
</span><span><span><span> ng-app<span>="modalApp"</span>></span>
</span> <span><span><span>></span>
</span> <span><span><span><title>></title></span>Modals with Angular and Ui-Router<span><span></span>></span>
</span> <span><span><span><link> rel<span>="stylesheet"</span> href<span>="css/app.css"</span> /></span>
</span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/jquery.min.js"</span>></span><span><span></span>></span>
</span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/angular.min.js"</span>></span><span><span></span>></span>
</span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/angular-ui-router.min.js"</span>></span><span><span></span>></span>
</span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/app.js"</span>></span><span><span></span>></span>
</span> <span><span><span></span>></span>
</span> <span><span><span>></span>
</span> <span><span><span></span>></span>
</span><span><span><span></span>></span></span></span></span></span></span></span></span>
3。啟用接口
>在我們打開模式之前,我們需要一個UI供用戶與用戶進行交互。在這種情況下
angular<span>.module("modalApp", ["ui.router"])</span>
4。配置初始狀態
>我們將為每種模式定義多個狀態,但是首先需要進行一些設置。由於我們可能希望在不同的模態之間共享行為,因此讓我們創建一個父模態可以繼承的父態狀態。以下代碼屬於js/app.js:
<span><span>
</span><span><span><span> ng-app<span>="modalApp"</span>></span>
</span> <span><span><span>></span>
</span> <span><span><span><title>></title></span>Modals with Angular and Ui-Router<span><span></span>></span>
</span> <span><span><span><link> rel<span>="stylesheet"</span> href<span>="css/app.css"</span> /></span>
</span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/jquery.min.js"</span>></span><span><span></span>></span>
</span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/angular.min.js"</span>></span><span><span></span>></span>
</span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/angular-ui-router.min.js"</span>></span><span><span></span>></span>
</span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/app.js"</span>></span><span><span></span>></span>
</span> <span><span><span></span>></span>
</span> <span><span><span>></span>
</span> <span><span><span><h3 id="gt">></h3></span>Pusheen Hoodie<span><span></span></span></span></span></span></span></span></span></span></span>
>
<span><span> </span><span><span><span> ng-app<span>="modalApp"</span>></span> </span> <span><span><span>></span> </span> <span><span><span><title>></title></span>Modals with Angular and Ui-Router<span><span></span>></span> </span> <span><span><span><link> rel<span>="stylesheet"</span> href<span>="css/app.css"</span> /></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/jquery.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/angular.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/angular-ui-router.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/app.js"</span>></span><span><span></span>></span> </span> <span><span><span></span>></span> </span> <span><span><span>></span> </span> <span><span><span></span>></span> </span><span><span><span></span>></span></span></span></span></span></span></span></span>
3。啟用接口
>在我們打開模式之前,我們需要一個UI供用戶與用戶進行交互。在這種情況下
angular<span>.module("modalApp", ["ui.router"])</span>4。配置初始狀態
>我們將為每種模式定義多個狀態,但是首先需要進行一些設置。由於我們可能希望在不同的模態之間共享行為,因此讓我們創建一個父模態可以繼承的父態狀態。以下代碼屬於js/app.js:
<span><span> </span><span><span><span> ng-app<span>="modalApp"</span>></span> </span> <span><span><span>></span> </span> <span><span><span><title>></title></span>Modals with Angular and Ui-Router<span><span></span>></span> </span> <span><span><span><link> rel<span>="stylesheet"</span> href<span>="css/app.css"</span> /></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/jquery.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/angular.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/angular-ui-router.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/app.js"</span>></span><span><span></span>></span> </span> <span><span><span></span>></span> </span> <span><span><span>></span> </span> <span><span><span><h3 id="gt">></h3></span>Pusheen Hoodie<span><span></span></span></span></span></span></span></span></span></span></span>
>
Now you too can look like Pusheen!> Add to cart> > >>我們定義了一個稱為“模態”的狀態。這是一個抽象狀態,意味著它不能直接過渡到。它僅是其子女國家的父母提供共同的功能。我們還為命名視圖(也稱為模態)定義了一個模板。命名您的觀點是一個好主意,避免將錯誤的狀態加載到應用程序中的錯誤位置,尤其是如果您在應用程序中使用UI-Router。5。定義UI視圖指令,以使我們的模態加載到
>> UI-Router使用稱為UI-View的指令來確定應加載狀態模板的位置。我們將在我們的index.html頁面上包含一個UI-View指令:
>由於我們將視圖命名為“模態”,因此我們也需要將其傳遞給指令。 AutoScroll =“ false”設置可防止UI-Router嘗試將模態滾動到視圖中。
angular<span>.module("modalApp", ["ui.router"]).config(function($stateProvider) { </span> $stateProvider<span>.state("Modal", { </span> <span>views:{ </span> <span>"modal": { </span> <span>templateUrl: "modal.html" </span> <span>} </span> <span>}, </span> <span>abstract: true </span> <span>}); </span><span>});</span>6。創建我們的第一個實際模態
>讓我們繼續定義我們的第一個實際模態。我們將創建一個彈出窗口,詢問用戶是否確定他們要將產品添加到購物車中。
那樣簡單。我們使用路由器的DOT表示法將新的CornexadDtocart狀態定義為模態的孩子。我們還為我們的新模式指定了一個模板。
>由於ConfirmAdDtocart模態是模態狀態的孩子,因此UI-Router將在模態狀態模板(Modal.html)中尋找UI-View指令,以渲染確認模板。接下來,讓我們創建這兩個模板。
><span><span> </span><span><span><span> ng-app<span>="modalApp"</span>></span> </span> <span><span><span>></span> </span> <span><span><span><title>></title></span>Modals with Angular and Ui-Router<span><span></span>></span> </span> <span><span><span><link> rel<span>="stylesheet"</span> href<span>="css/app.css"</span> /></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/jquery.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/angular.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/angular-ui-router.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/app.js"</span>></span><span><span></span>></span> </span> <span><span><span></span>></span> </span> <span><span><span>></span> </span> <span><span><span><h3 id="gt">></h3></span>Pusheen Hoodie<span><span></span>></span> </span> <span><span><span><p>></p></span>Now you too can look like Pusheen!<span><span></span>></span> </span> <span><span><span><button>></button></span>Add to cart<span><span></span>></span> </span> <span><span><span><div> ui-view<span>="modal"</span> autoscroll<span>="false"</span>><span><span></span></span> </div></span>></span> </span> <span><span><span></span>></span> </span><span><span><span></span>></span></span></span></span></span></span></span></span></span></span></span>7。創建基本模態的模板
模態狀態的模板負責創建透明的背景來覆蓋該應用程序,以及各種各樣的持有人,我們將加載不同的兒童狀態模板。
這是屬於CSS/app.css的幾種基本樣式:
8。創建確認模態模板
此模板適用於帶有確認消息的實際模態框。以下代碼以模態/confirn.html:
angular<span>.module("modalApp", ["ui.router"]).config(function($stateProvider) { </span> $stateProvider<span>.state("Modal", { </span> <span>views:{ </span> <span>"modal": { </span> <span>templateUrl: "modal.html" </span> <span>} </span> <span>}, </span> <span>abstract: true </span> <span>}); </span> $stateProvider<span>.state("Modal.confirmAddToCart", { </span> <span>views:{ </span> <span>"modal": { </span> <span>templateUrl: "modals/confirm.html" </span> <span>} </span> <span>} </span> <span>}); </span><span>});</span>模式框的
樣式:
<span><span> </span><span><span><span> ng-app<span>="modalApp"</span>></span> </span> <span><span><span>></span> </span> <span><span><span><title>></title></span>Modals with Angular and Ui-Router<span><span></span>></span> </span> <span><span><span><link> rel<span>="stylesheet"</span> href<span>="css/app.css"</span> /></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/jquery.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/angular.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/angular-ui-router.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/app.js"</span>></span><span><span></span>></span> </span> <span><span><span></span>></span> </span> <span><span><span>></span> </span> <span><span><span></span>></span> </span><span><span><span></span>></span></span></span></span></span></span></span></span>
9。將其連接起來
>現在我們擁有一個帶有子狀態的父態狀態,並且它們的兩個模板實際上要做的就是觸發模態。 UI-Router為我們提供了一個名為UI-SREF的指令,其行為與錨標籤的HREF屬性相似。它從本質上將我們鏈接到我們提供的狀態名稱。
angular<span>.module("modalApp", ["ui.router"])</span>
>現在,當我們單擊按鈕時,路由器將導航我們到modal.confirmaddtocart狀態。模態狀態的模板將首先加載到index.html中的UI-View指令中。這將顯示我們的背景並準備持有人。然後,“白色確認”對話框將加載到父模式模板中的UI-View指令中,嘿Presto!我們有模態!
10。關閉模態
您可能會注意到的第一件事是您無法關閉模式。讓我們解決這個問題。
我們設置的事件相當微不足道。我們只需要收聽ESC鍵,以及背景上的任何點擊即可。此外,已經添加了一個e.stoppropagation()調用,以防止在模態內咔嗒聲到背景並無意中關閉模態。 <span><span>
</span><span><span><span> ng-app<span>="modalApp"</span>></span>
</span> <span><span><span>></span>
</span> <span><span><span><title>></title></span>Modals with Angular and Ui-Router<span><span></span>></span>
</span> <span><span><span><link> rel<span>="stylesheet"</span> href<span>="css/app.css"</span> /></span>
</span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/jquery.min.js"</span>></span><span><span></span>></span>
</span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/angular.min.js"</span>></span><span><span></span>></span>
</span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/angular-ui-router.min.js"</span>></span><span><span></span>></span>
</span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/app.js"</span>></span><span><span></span>></span>
</span> <span><span><span></span>></span>
</span> <span><span><span>></span>
</span> <span><span><span><h3 id="gt">></h3></span>Pusheen Hoodie<span><span></span>></span>
</span> <span><span><span><p>></p></span>Now you too can look like Pusheen!<span><span></span></span></span></span></span></span></span></span></span></span></span>
11。過渡到另一個模態
>現在我們可以打開和關閉模態,我們可以開始看到這種方法的真正強度。使每種模態以一個狀態表示,不僅乾淨有意義,而且使我們能夠在這些模態內穿越狀態。
>我們開始要求用戶確認他們的購買。現在,讓我們在另一種模式中向他們展示一個成功消息。同樣,我們將僅定義一個新狀態及其關聯的模板:>
現在,剩下要做的就是將“是”按鈕從確認模式鏈接到新的成功狀態。當我們在那裡時,我們可以添加一個鏈接到我們默認狀態的“否”按鈕以關閉模式。
angular<span>.module("modalApp", ["ui.router"]).config(function($stateProvider) { </span> $stateProvider<span>.state("Modal", { </span> <span>views:{ </span> <span>"modal": { </span> <span>templateUrl: "modal.html" </span> <span>} </span> <span>}, </span> <span>abstract: true </span> <span>}); </span><span>});</span>>您有!基於狀態的,可導航的模式。我發現將模式視為狀態是確保用戶在應用程序中使用模式時具有平穩體驗的肯定方法。
<span><span> </span><span><span><span> ng-app<span>="modalApp"</span>></span> </span> <span><span><span>></span> </span> <span><span><span><title>></title></span>Modals with Angular and Ui-Router<span><span></span>></span> </span> <span><span><span><link> rel<span>="stylesheet"</span> href<span>="css/app.css"</span> /></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/jquery.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/angular.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/angular-ui-router.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/app.js"</span>></span><span><span></span>></span> </span> <span><span><span></span>></span> </span> <span><span><span>></span> </span> <span><span><span><h3 id="gt">></h3></span>Pusheen Hoodie<span><span></span>></span> </span> <span><span><span><p>></p></span>Now you too can look like Pusheen!<span><span></span>></span> </span> <span><span><span><button>></button></span>Add to cart<span><span></span>></span> </span> <span><span><span><div> ui-view<span>="modal"</span> autoscroll<span>="false"</span>><span><span></span></span> </div></span>></span> </span> <span><span><span></span>></span> </span><span><span><span></span>></span></span></span></span></span></span></span></span></span></span></span>
由於模式只是狀態,因此您獲得了Angular UI路由器的所有其他添加好處,包括: >本文中的所有代碼均可在GitHub上獲得。我很想听聽您對Angularjs中模態方法的反饋,所以請發表評論:) > 以關閉AngularJS中的狀態模式,您可以使用$ State Service過渡到另一個狀態。這將導致AngularJS卸載模式的模板並關閉模式。您還可以使用瀏覽器的返回按鈕來關閉模態,如果您配置了模態以實現狀態。 >在Angularjs中創建狀態模式時,我如何處理錯誤?可以使用$ statechangeerror事件來處理錯誤。當狀態過渡期間發生錯誤時,該事件在根範圍內廣播。您可以在控制器中聆聽此事件,並在發生時採取適當的操作。 >如何測試AngularJS中的狀態模式?可以使用Angular的內置測試工具來完成AngularJ。您可以使用$狀態服務過渡到模式狀態,然後檢查模態模板是否正確加載。您還可以使用Angular的$ Controller服務來測試模式控制器中的任何功能。
經常詢問的問題(常見問題解答)關於使用AngularJ和Angular UI路由器創建狀態模式
>如何使用AngularJ和Angular UI路由器創建一個狀態模態? >如何關閉AngularJs中的狀態模式?
>我可以使用其他版本的Angular?具有其他版本的Angular的狀態模式。但是,創建狀態模式的過程可能會根據您使用的Angular的版本而有所不同。始終以最準確和最新的信息來參考官方角文檔。
>我可以將數據傳遞到Angularjs中的狀態模式嗎?在Angularjs中。在定義模態狀態時,可以使用參數選項完成此操作。參數選項允許您在打開模態時指定應傳遞給模態控制器的任何參數。
>
以上是用Angular UI路由器在AngularJ中創建狀態模式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python和JavaScript的主要區別在於類型系統和應用場景。 1.Python使用動態類型,適合科學計算和數據分析。 2.JavaScript採用弱類型,廣泛用於前端和全棧開發。兩者在異步編程和性能優化上各有優勢,選擇時應根據項目需求決定。

選擇Python還是JavaScript取決於項目類型:1)數據科學和自動化任務選擇Python;2)前端和全棧開發選擇JavaScript。 Python因其在數據處理和自動化方面的強大庫而備受青睞,而JavaScript則因其在網頁交互和全棧開發中的優勢而不可或缺。

Python和JavaScript各有優勢,選擇取決於項目需求和個人偏好。 1.Python易學,語法簡潔,適用於數據科學和後端開發,但執行速度較慢。 2.JavaScript在前端開發中無處不在,異步編程能力強,Node.js使其適用於全棧開發,但語法可能複雜且易出錯。

javascriptisnotbuiltoncorc; sanInterpretedlanguagethatrunsonenginesoftenwritteninc.1)JavascriptwasdesignedAsignedAsalightWeight,drackendedlanguageforwebbrowsers.2)Enginesevolvedfromsimpleterterpretpretpretpretpreterterpretpretpretpretpretpretpretpretpretcompilerers,典型地,替代品。

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。

選擇Python還是JavaScript應基於職業發展、學習曲線和生態系統:1)職業發展:Python適合數據科學和後端開發,JavaScript適合前端和全棧開發。 2)學習曲線:Python語法簡潔,適合初學者;JavaScript語法靈活。 3)生態系統:Python有豐富的科學計算庫,JavaScript有強大的前端框架。

JavaScript框架的強大之處在於簡化開發、提升用戶體驗和應用性能。選擇框架時應考慮:1.項目規模和復雜度,2.團隊經驗,3.生態系統和社區支持。

引言我知道你可能會覺得奇怪,JavaScript、C 和瀏覽器之間到底有什麼關係?它們之間看似毫無關聯,但實際上,它們在現代網絡開發中扮演著非常重要的角色。今天我們就來深入探討一下這三者之間的緊密聯繫。通過這篇文章,你將了解到JavaScript如何在瀏覽器中運行,C 在瀏覽器引擎中的作用,以及它們如何共同推動網頁的渲染和交互。 JavaScript與瀏覽器的關係我們都知道,JavaScript是前端開發的核心語言,它直接在瀏覽器中運行,讓網頁變得生動有趣。你是否曾經想過,為什麼JavaScr


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Dreamweaver CS6
視覺化網頁開發工具

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

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