Angular-ui以及如何绑定模态表单输入

时间:2014-09-07 22:00:16

标签: angularjs angular-ui angular-ui-bootstrap

我目前正在学习AngularJS,而且我正在玩ui-bootstrap。

我已经创建了一个带有表单的简单模态,并且我尝试绑定主页面上的属性(调用模态的页面)。

例如,更新模态和attr中的名称。在后台更新。

无法理解为什么它不起作用。从同一个控制器调用模态,并更新模态中的属性。

我的模态看起来像这样:

<div ng-controller="LocationsCtrlGet">
  <div class="modal-header">
    <h3 class="modal-title">I'm a modal for {{ location.location_name }}</h3>
  </div>
  <div class="modal-body">
    <form ng-submit="save(location)" ng-model='location'>
    <div class="form-group row">
      <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
        <input ng-model="location.location_name" class='form-control' placeholder='Location name'>
      ...

在我的主页:

<div ng-controller="LocationsCtrlGet">
  {{ location.location_name }}
    <p ng-click="open('small')" class='btn btn-default btn-sm'><i class='fa fa-edit fa-sm'></i>Edit</p>
</div>

控制器:

app.controller('LocationsCtrlGet', ['$scope', '$routeParams', '$modal', 'Location',
  function($scope, $routeParams, $modal, Location) {

  $scope.location = Location.get({id: $routeParams.id}, function(data) {
    $scope.loading = false
  })

  $scope.open = function (size) {
    var modalInstance = $modal.open({
      templateUrl: 'partials/locations/editLocationModal',
      controller: ModalInstanceCtrl,
      size: size
    });
    ...

如果我将表单放在主html中,它可以正常工作。并且,就像我说的,它更新了模态中的属性。

1 个答案:

答案 0 :(得分:-1)

您应该将字段绑定到ModalInstanceCtrl的范围而不是LocationsCtrl。

在模态视图中,您有ng-controller指令和控制器定义的$ modal.open()方法。删除ng-controller指令。

<div>
  <div class="modal-header">
    <h3 class="modal-title">I'm a modal for {{ location.location_name }}</h3>
  </div>
  <div class="modal-body">
    <form ng-submit="save(location)" ng-model='location'>
    <div class="form-group row">
     <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
        <input ng-model="location.location_name" class='form-control' placeholder='Location name'>
  ...

在您的示例中,您没有发布ModalInstanceCtrl。在此,您应该有提交表单的操作。