有多種方法可以在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中文網其他相關文章!

JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。

Python更適合數據科學和自動化,JavaScript更適合前端和全棧開發。 1.Python在數據科學和機器學習中表現出色,使用NumPy、Pandas等庫進行數據處理和建模。 2.Python在自動化和腳本編寫方面簡潔高效。 3.JavaScript在前端開發中不可或缺,用於構建動態網頁和單頁面應用。 4.JavaScript通過Node.js在後端開發中發揮作用,支持全棧開發。

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。1)C 用于解析JavaScript源码并生成抽象语法树。2)C 负责生成和执行字节码。3)C 实现JIT编译器,在运行时优化和编译热点代码,显著提高JavaScript的执行效率。

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

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

Dreamweaver Mac版
視覺化網頁開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中