首页 > 解决方案 > 对父变量禁用 ng

问题描述

我一直在寻找类似的线程,但找不到。ng-disabled是否可以使用基于父变量的angularJS 指令禁用按钮?

我已经vm.disableSave = true在父控制器中定义,我试图禁用子控制器上的保存按钮$scope.$parent.vm.disableSave。它不工作。目前我正在尝试

<button type="button" ng-disabled="$scope.$parent.vm.disableSave" ng-click="vm.submit()" 
                      class="btn btn-primary submit-button top5">Save</button>

我知道我可以vm.disableSave = $scope.$parent.vm.disableSave在我的子控制器中执行类似的操作,然后执行,ng-disabled = "vm.disableSave"但是有没有办法一次性完成,而不是在子控制器中创建一个新变量?

标签: javascripthtmlangularjs

解决方案


使用控制器作为语法,我们可以使用相应的控制器对象并检索任何属性值。

不需要 $parent 属性。无论您在嵌套层次结构中有多深。您可以轻松获取任何控制器对象的属性值。

看下面的代码

angular.module('app',[])

.controller('parentCtrl',function(){
  var vm = this;
  vm.disableSave = true
})

.controller('childCtrl',function(){
  var vm = this;
})
<html ng-app="app">
 <body>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-controller="parentCtrl as parent">
  <div ng-controller="childCtrl as child">
    <button type="button" ng-disabled="parent.disableSave" ng-click="vm.submit()" 
    class="btn btn-primary submit-button top5">Save</button>
  </div>
</div>
  </body>
 </html>


推荐阅读