单击ng-disabled按钮触发li包装

时间:2017-01-31 21:38:47

标签: javascript angularjs

我有button,其中包含li标记。

<li class="right" 
    ng-click="isError(locationForm.$invalid)" 
    ng-if="action == 'add'">

    <button ng-disabled="locationForm.$invalid" 
            ng-click="addLocation(location)" 
            class="options active">Save        
    </button>

</li>

由于我无法获得disabled按钮的onclick事件,因此我将其与li包装在一起,点击后我计划通知用户该错误。

$scope.isError = function(error){
     console.log(error);
     if(error){
          ngNotify.set('Your notification message goes here!');
     }
}

但由于某种原因,当按钮为ng-click时,li标记上的disabled不会被触发。不知道这里有什么问题。

1 个答案:

答案 0 :(得分:1)

也许解决方案是将ng-disabled="locationForm.$invalid"替换为ng-class={'disabled': locationForm.$invalid},然后替换为HTML:

<button ng-class="{'disabled': locationForm.$invalid}"
        ng-click="addLocation(location, locationForm.$invalid)" 
        class="options active">Save        
</button>

在JS中:

$scope.addLocation = function (location, error) {
    if(error){
          ngNotify.set('Your notification message goes here!');
          return;
     }
     //rest stuff when no error
}

顺便说一句,你应该真的避免使用$scope支持组件或至少controller as语法,除非你真的必须(坚持使用Angular 1.2或遗留代码)。