【发布时间】:2017-01-19 13:37:46
【问题描述】:
我有一些字段,它们可以编辑。用户可以使用“取消”按钮取消编辑模式:
<button ng-click="cancelEdit();" ng-show="editable">
<i class="fa fa-remove"></i> Cancel
</button>
ng-click 事件调用函数cancelEdit()。
$scope.cancelEdit = function(){
$scope.editable=false;
$scope.jobNameInput = $scope.jobToView.name;
$scope.selectedPriority = $scope.jobToView.priority;
$scope.jobCommentsInput = $scope.jobToView.comments;
}
在这个函数中,我只想将编辑模式的布尔变量设置为 false 并将我的输入值重新初始化为默认值(在编辑模式之前)。调用此函数后,控制器的值会更新,但在我看来不是:
<button ng-click="editable=true;" ng-show="!editable">
<i class="fa fa-edit"></i> Edit
</button>
当变量 editable 设置为 false 时显示此按钮。因此,理论上,当我单击取消按钮时,必须显示按钮编辑并且我的输入应该更新。为什么不是这样?
【问题讨论】:
-
你能展示你如何绑定
$scope.jobNameInput和视图中的其他值吗? $scope.jobToView.name 的价值是什么?如果你能做一个剪断或 plnkr,那就太好了。所以我们可以更好地为您提供帮助。 -
mmm 试试这样设置 ng-click="editable=true;"不在按钮中,但有一个功能.. 所以 ng-click="setEditTrue()" 然后 $scope.setEditTrue= function(){ $scope.editable=true; }
-
尝试将可编辑变量替换为对象的属性,而不是作为$scope的属性,例如:buttonEditable = {value:true};然后在你的html中:ng-click="buttonEditable.value=true"
-
当我尝试做 plunker 时,它奏效了。我认为这是一个与我仅在用户在使用 ng-class 之前单击按钮时才显示这些输入的事实相关的问题(已检查 / !已检查)。输入示例:
<input type="text" ng-model="jobCommentsInput" ng-value="jobToView.comments" ng-disabled="!editable" />
标签: angularjs view controller