2016-02-04 69 views
0

我想要的是一种可用于创建和更新的表单。所以我通过显示之前通过带范围的角度设置表单?

$scope.form = {}; 

$scope.car = null; 
$scope.getCar = function(hash) { 
    $http.get('/cars/'+hash).success(function(car) { 
     $scope.car = car; 
     $scope.form = car; 
    }); 
}; 

正如你所看到的,我将get的结果添加到汽车和窗体。 现在我打开查看:

<h1>{{ form.name }} <small>shows correctly</small></h1> 

但行之后,我试图几乎相同:

<form class="list" ng-submit="createOrUpdateForm(form)"> 

    <label class="item"> 
     <span class="input-label">Name</span> 
     <input type="text" ng-model="form.name"> 

这不是出...但是当我添加同一行之后它是这样的:

<input type="text" ng-model="car.name"> 

这样做的工作,但后来我不能使用ng-submit了,因为那个引用形式。

形成一些原因,我不能设置窗体范围?

+0

困惑,因为你覆盖与'car'初始目标是怎么回事。 “汽车”是一个物体吗?也不确定你需要2个具有相同'汽车'值的范围变量。创建一个复制问题的演示 – charlietfl

回答

1

你不应该手动分配任何东西给form。 “表单”与您使用表单管理的数据不一样。在这种情况下,空对象{}car都没有意义。

给表单一个名称,这将允许角度将其分配给范围属性。

<h1>{{ car.name }} <small>shows correctly</small></h1> 

<form name="carForm" ng-submit="createOrUpdateForm(carForm)"> 

    <label class="item"> 
     <span class="input-label">Name</span> 
     <input type="text" ng-model="car.name"> 

$scope.createOrUpdateForm = function(form) { 
    if(form.$valid) { 
     console.log($scope.car.name); 
     // POST/PUT your data. 
    } 
};