Angularjs 角度UI引导模式更新$scope

Angularjs 角度UI引导模式更新$scope,angularjs,angular-ui-bootstrap,Angularjs,Angular Ui Bootstrap,我想使用模式来编辑我的数据。我将数据传递给modal实例。单击“确定”后,我将所选$scope.com中的编辑数据传递回控制器 在那里,我想更新原来的$scope。然而,$范围不知何故没有更新。我做错了什么 var ModalDemoCtrl = function ($scope, $modal, $log) { $scope.data = { name: '', serial: '' } $scope.edit = function (theIndex) { var m

我想使用模式来编辑我的数据。我将数据传递给modal实例。单击“确定”后,我将所选$scope.com中的编辑数据传递回控制器

在那里,我想更新原来的$scope。然而,$范围不知何故没有更新。我做错了什么

var ModalDemoCtrl = function ($scope, $modal, $log) {

  $scope.data = { name: '', serial: ''  }

  $scope.edit = function (theIndex) {

    var modalInstance = $modal.open({
      templateUrl: 'myModalContent.html',
      controller: ModalInstanceCtrl,
      resolve: {
        items: function () {
          return $scope.data[theIndex];
        }
      }
    });

    modalInstance.result.then(function (selectedItem) {
      $scope.selected = selectedItem;

      // this is where the data gets updated, but doesn't do it
      $scope.data.name = $scope.selected.name;
      $scope.data.serial = $scope.selected.serial;

    });
  };
};
模态控制器:

var ModalInstanceCtrl = function ($scope, $modalInstance, items) {

  $scope.items = items;
  $scope.selected = {
    name: $scope.items.name,
    serial: $scope.items.serial
  };

  $scope.ok = function () {
    $modalInstance.close($scope.selected);
  };

  $scope.cancel = function () {
    $modalInstance.dismiss('cancel');
  };
};
模态:

<div class="modal-header">
    <h3>{{ name }}</h3>
</div>
<div class="modal-body">
    <input type="text" value="{{ serial }}">
    <input type="text" value="{{ name }}">
</div>
<div class="modal-footer">
    <button class="btn btn-primary" ng-click="ok()">OK</button>
    <button class="btn btn-warning" ng-click="cancel()">Cancel</button>
</div>

{{name}}
好啊
取消

您没有包含模态的模板,因此这有点像猜测。您的代码与angular ui模式的示例代码非常接近,该模式在模板中使用
ng repeat
。如果您正在做同样的事情,那么您应该知道,
ng repeat
创建了一个子作用域,该子作用域继承自父作用域

从这个片段判断:

$scope.ok = function () {
    $modalInstance.close($scope.selected);
};
它看起来不像是在模板中执行此操作:

<li ng-repeat="item in items">
    <a ng-click="selected.item = item">{{ item }}</a>
</li>

请参阅一个工作示例。

呵呵,thx有点输入错误,但并不能解决问题:-)thx我只是使用两个输入来更新“name”和“serial”。不要重复
<li ng-repeat="item in items">
    <a ng-click="selected = item">{{ item }}</a>
</li>
<input type="text" ng-model="editable.serial" />
<input type="text" ng-model="editable.name" />