我有一个表格,其中的行与用户创建的管道相对应。可以选择启动或停止该管道。如果管道正在运行,则相应的"开始"应该禁用Button,以及管道现在开始启动(在startPipeline ajax调用的成功函数被触发之前)。因此,每当用户点击"开始"我将一个范围变量设置为true,这应该禁用启动按钮,直到它在success函数中重新启用。但是ng-disabled似乎不起作用。我的部分HTML(起始部分,停止是相同的):
<tr ng-repeat="pipeline in pipelines" ng-click="showPipeline(pipeline)" >
<td>{{$index+1}}</td>
<td>{{pipeline.name}}<br/>{{pipeline.description}}</td>
<td>TBD</td>
<td>{{pipeline.running == true ? 'Running' : 'Idle'}}</td>
<td><md-button ng-click="startPipeline(pipeline._id)" class="md-icon-button md-raised" ng-disabled="starting || pipeline.running == true">
以及我的控制器的重要部分:
$scope.starting = false;
$scope.stopping = false;
$scope.startPipeline = function(pipelineId) {
$scope.starting = true;
console.log("starting pipeline");
restApi.startPipeline(pipelineId)
.success(function(data) {
$scope.starting = false;
...
})
.error(function(data){
$scope.starting = false;
...
});
};
答案 0 :(得分:0)
使用ng-show
可能是更好的方法:
<md-button ng-click="startPipeline(pipeline._id)" class="md-icon-button md-raised" ng-show="starting || pipeline.running">
如果您只使用变量开始或 pipeline.running ,则无需将其值与true
或false
进行比较。
var
使用true
,!var
使用false
。
顺便说一句:如果通过设置控制器中的值来显示/隐藏按钮,请通过$scope.$apply();