AngularJS:将从模态返回的数据绑定到点击它的行

AngularJS: Bind data returned from a modal to row it was clicked from

这里使用AngularJS。

我正在开发一个有下拉菜单的 UI。根据用户 selects 我向用户显示 2 个选项卡。

每个选项卡数据都return来自一个服务,该服务只是return一个数据数组(字符串)。

针对每个字符串值 returned 我显示了一个按钮。当您单击该按钮时,它会打开一个模式弹出窗口,用户可以在其中 select 一些数据。 当他们关闭模式时,我 return 将数据返回给控制器。

将数据绑定到选项卡、打开模态和从模态 returning 数据的正常流程都工作正常。

我无法理解或设计的是如何将 returned 数据绑定到点击它的按钮或行

例如:

Tab1

String1 - Button1

String2 - Button2

String3 - Button3

如果我通过单击 button1 打开模式,我如何找出 button1 被按下并绑定从其模式 return 编辑的数据。

部分相关代码如下:

<div id="params" ng-if="type.selected">
  <tabset class="tabbable-line">
    <tab heading="Sets" ng-if="sets" active="tab.set">    
        <div class="form-group m-grid-col-md-8 param" style="margin-top:5px"
             ng-repeat="set in sets" >
              <label class="control-label col-md-3 param-label">{{set}}
              </label>                  
              <button ng-click="openModal()" class="btn btn-info btn-sm">
                Select
              </button> 
        </div>
    </tab>
    <tab heading="Tables" ng-if="tables" active="tab.table">       
        <div class="form-group m-grid-col-md-8 param"
             ng-repeat="table in tables">
            <label class="control-label col-md-3 param-label">{{table}}
            </label>               
            <button ng-click="openModal()" class="btn btn-info btn-sm">
                Select
            </button>
            </div>
        </tab>
    </tabset>
</div> 

控制器:

  $scope.onChangeType = function (selectedValue) {           
       $scope.getData(selectedValue);
  };

  $scope.getData = function (selectedValue) {
      //Commenting out the service part for now and hardcoding array
      // service.getData(selectedValue).then(function (res) {
           $scope.sets = ['Set1', 'Set2', 'Set3'];   
           $scope.tables = ['Table1', 'Table2'];
      // });
  };


  $scope.openModal = function () {
       myFactory.defineModal().then(function (response) {
            //how to bind data from response
        });
   };

我为此示例创建了一个 plnkr,如下所示: http://plnkr.co/edit/vqtQsJP1dqGnRA6s?preview

--已编辑--

 <div class="form-group m-grid-col-md-8 param" ng-repeat="table in tables">
    <label class="control-label col-md-3 param-label">{{table}}
    </label>               
    <button ng-click="openModal(table)" class="btn btn-info btn-sm">
        Select
    </button>
       <span>
        {{table.utype}}
    </span> 
</div>

尝试在模板中将 table 传递给 openModal

<button ng-click="openModal(table)"

现在您可以在 openModal 函数中将其用作参考

$scope.openModal = function (table) {
  // table === the clicked table
}

table 对象作为参数传递给 openModal 函数:

<button ng-click="openModal(table)">Select</button>

openModal函数中使用:

$scope.openModal = function (table) {
     myFactory.defineModal().then(function (result) {
         table.utype = result.utype;
         table.minvalue = result.minvalue;
     });
};

一定要用结果关闭模态:

$scope.ok = function () {
    var result = { 
      utype: $scope.utype,
      minvalue: $scope.minvalue,
    };
    $modalInstance.close(result); 
};

请记住,模态框被认为是破坏性的并且被用户鄙视。

一般来说,干扰和分心会对人的表现产生负面影响,这是认知心理学中的一个常见发现。许多研究表明,分心会大大增加各种任务的任务时间。

有关详细信息,请参阅


While I dont get any error not but I dont get the text returned.

一定要为ng-repeat提供物品:

  $scope.getData = function (selectedValue) {
      //Commenting out the service part for now and hardcoding array
      // service.getData(selectedValue).then(function (res) {
           ̶$̶s̶c̶o̶p̶e̶.̶t̶a̶b̶l̶e̶s̶ ̶=̶ ̶[̶'̶T̶a̶b̶l̶e̶1̶'̶,̶'̶T̶a̶b̶l̶e̶2̶'̶]̶;̶
           $scope.tables = [
             {name:'Table1',},
             {name:'Table2',},
          ];
      // });
  };

DEMO on PLNKR