繁体   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