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}}