簡體   English   中英

將信息從Angular.js控制器傳遞到引導模式

[英]Pass information to bootstrap modal from Angular.js controller

簡化問題

我有商店 對於要包含在商店中的產品,需要有一個架子。 因此,要向商店添加新產品,工作流程為:

  1. 添加架子
  2. 將產品添加到該貨架

(無法更改工作流程)

實現

架子通過表中的一行來實現,該表又由Angular.js控制器控制(每個架子都是數組中的一個對象)。 要添加產品,用戶可以在每一行上的下拉菜單中選擇“創建產品”。 這將顯示一個引導程序模式,在該模式中,我從控制器添加了可以添加的每個產品的選項卡(因為每個產品都需要配置:)),然后當用戶在模式中按下“創建”按鈕時,JavaScript方法是稱為連接REST接口以添加產品的接口(成功添加產品后,UI由服務器發送的Socket.io事件更新。

問題

JavaScript方法(CreateProduct)現在需要受影響的行(R)以及選擇了哪個標簽(T),以便按鈕的“ onclick”方法為CreateProduct(R,T); 我當前的解決方案是非常丑陋的恕我直言,我有兩個用於R和T的全局變量,然后我使用jQuery從模式中捕獲show事件和tab事件,下拉菜單中的鏈接具有一個字段“ data-row-id”,即識別行

下拉菜單中的HTML(Jade)代碼段:

a(data-toggle="modal", href="#createProduct", data-row-id="{{row.RowID}}") Create Product

JavaScript:

var R = null;
$('#productModal').on('show.bs.modal', function(e) {
    R = $(e.relatedTarget).data('row-id');
});

var T = null;
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
    T = e.target.text;
});

我希望對此有一個更好的解決方案,由於對Angular.js的經驗不足,我可能只是想一點點倒置,也許有辦法將它們傳遞給模型? 也許將這些添加到模態控制器,但是,如何傳遞該行? 我的夢想將是在按鈕代碼上這樣的事情

 button(type="button", class="btn btn-default", data-dismiss="modal", ng-click="storeCtrl.CreateProduct({{modalCtrl.shelf, modalCtrl.Product)") Create Product

我發現了使用ModalService的更好的方法(至少我不需要使用jQuery)

我創建了具有變量selectedProduct的CreateProductModalController,這是在標簽中的ng-click事件上設置的

ul(class="nav nav-pills", id="tabContent")
    li(ng-repeat="prod in products", ng-class="{active: $index == 0}", ng-click="activateTab(prod.name)")
        a(href="#{{prod.name}}", data-toggle="tab") {{prod.name}}

使用單擊的rowID調用ModalService。

我現在唯一的問題是所有內容都必須在$ scope中,我希望對其進行更多封裝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM