从一个指令到另一个指令访问ng-model

时间:2016-07-27 11:27:15

标签: javascript angularjs

所以我在第一个指令中有了这个模板

<tr ng-repeat="node in myprops.List">
        <td>{{node.startDate | date: 'yyyy-MM-dd'}}</td>
        <td>{{node.endDate | date: 'yyyy-MM-dd'}}</td>
        <td>{{node.workInHours }}</td>
        <td><label type="button" style="cursor:pointer" ng-click="setIndex($index)" data-toggle="modal" data-target="#{{myprops.id}}">edit</label></td>
        <td><input type="checkbox" ng-click="onClick()" ng-model="node.selected" ></td>
    </tr>

并且在该指令中我有控制器谁有函数setIndex(索引).. 所以当我点击按钮时,它打开那个模态

<form name="myForm">
                        <md-datepicker ng-model="sDate" md-placeholder="Enter date"></md-datepicker>
                        <md-datepicker ng-model="eDate" md-placeholder="Enter date"></md-datepicker>
                        <input type="number" ng-model="hours"  required>
                    </form>

并且那个模态是在其他指令模板中..所以我需要当我点击按钮并打开模态,数组中的那个$ index将添加到模型上的ng-model ..sDate..eDate和小时... 简而言之,我需要访问另一个指令

中另一个控制器的一个指令模板中的ng模型

1 个答案:

答案 0 :(得分:1)

您应该将模型对象从主控制器传递给模态指令控制器,然后通过模态中的操作修改它,将此对象返回到上一个控制器并从模态分配新数据

E.g(ui.bootstrap):

function MainController($scope, $modal) {
  $scope.model = {};

  $scope.onClick = function () {
    var modalInstance = $modal.open({
     // params
     controller: ModalController;
     resolve: {data: function() {return $scope.model}}
    });
    modalInstance.result.then(function (data) {
      $scope.model = data
    })
  }
}

function ModalController($scope, $modalInstance, data) {
  // actions
  $scope.data = data;
  $scope.saveForm = function () {
    $modalInstance.close($scope.data)
  }
}