Javascript Angularjs ng disabled正在禁用我的所有按钮

Javascript Angularjs ng disabled正在禁用我的所有按钮,javascript,angularjs,Javascript,Angularjs,我有一个函数,一次单击就调用它。单击后,我想禁用已单击的按钮。到目前为止,我所能做的就是当我只单击一个按钮时,让所有按钮都禁用。我试着按一下键,但没有成功 这是我的html: <tr ng-repeat="parcel in parcels"> <td><a ng-href="http://www.local.com/orders/{{ parcel.id }}/edit/">{{ parcel.id }}</a></td>

我有一个函数,一次单击就调用它。单击后,我想禁用已单击的按钮。到目前为止,我所能做的就是当我只单击一个按钮时,让所有按钮都禁用。我试着按一下
,但没有成功

这是我的html:

 <tr ng-repeat="parcel in parcels">
    <td><a ng-href="http://www.local.com/orders/{{ parcel.id }}/edit/">{{ parcel.id }}</a></td>
    <td>{{ parcel.tid }}</td>
    <td>{{ parcel.srfn }}</td> 
    <td><a  class="btn btn-success"  ng-disabled="isDisabled" ng-click="resolve({{parcel.id}})">Resolve</a></td>                                  
 </tr>        

您可以尝试以下方法:

<a ng-disabled="isDisabled(parcel.id)" ng-click="resolve(parcel.id)">Resolve</a>
$scope.resolve = function(parcel) { 
  $http({ 
    method: 'GET', 
    url: '/outboundsummary/' + parace.id, 
  }) 
  .success(function(data){ 
    parcel.disabled = true; 
  }); 
};

$scope.isDisabled
在控制器中保留
$scope
变量的单一状态。由于要在
ng repeat
中禁用每个地块的“解析”按钮的状态,因此可以使用地块对象指示其状态,此外,还可以在
resolve()
函数中传递地块变量以获取状态和id。无需插值
{}
将角度表达式传递到
ng时的地块id单击
回调

JAVASCRIPT

$scope.resolve = function(parcel)  {

    $http({
        method: 'GET',
        url: '/outboundsummary/' + parcel.id, 
    })
    .success(function(data){
      parcel.disabled = true;
    });
};
HTML

<tr ng-repeat="parcel in parcels">
  <td><a ng-href="http://www.local.com/orders/{{ parcel.id }}/edit/">{{ parcel.id }}</a></td>
  <td>{{parcel.id}}</td>
  <td>{{parcel.desc}}</td>
  <td>
    <a class="btn bnt-success" ng-disabled="parcel.disabled" ng-click="resolve(parcel)">Resolve</a>
  </td>
</tr>

由于ng repeat为每个元素创建了一个新的子范围,所以我认为这很容易。试一试


Resolve

我会尝试在上面或下面的表中添加{{parcels | json}},看看问题是在ng disable中还是在发送给ng repeat的数据中

html文本中的
p
是什么,可能是
parcels
?p是parcels。我会把它改回来,这样就不会有人感到困惑了。我对这个修复非常有希望,但我不知道为什么它不起作用。没有什么能使人失去能力。我可以在点击按钮一次后继续点击它。你能创建一个plunker吗?还是说你是个骗子?如果你做了一个,你会更容易发现问题。当我做一个
ng disabled=“parcel.disabled”
时,如果我把它改成
ng disabled=“{{parcel.disabled}会有关系吗
?是的,会的,因为角度表达式中的插值只计算一次。我得到的是,当我将其写入控制器时,
包裹
没有定义。我很困惑为什么我们创建了一个名为
包裹的东西。禁用了
嗯。我将尝试一下。在我成功的过程中,我必须以某种方式将“disabled”为false?我认为这不是一个好主意,因为
resolve()
函数将调用
$http
请求,并且只有当请求成功时按钮才会被禁用。如果请求失败怎么办?另外,您可以简单地这样做:
ng click=“resolve(parcel.id);disabled=true“
我同意,我认为这只是一次禁用。重新启用也是一个挑战。 {{parcels |json}}
$scope.resolve = function(parcel) { 
  $http({ 
    method: 'GET', 
    url: '/outboundsummary/' + parace.id, 
  }) 
  .success(function(data){ 
    parcel.disabled = true; 
  }); 
};
{{parcels |json}}