Javascript AngularJS-禁用ng的错误?不使用新值更新
我对棱角有点陌生,遇到了一个非常奇怪的问题,我相信其他人也遇到过 假设这是我的按钮的代码:Javascript AngularJS-禁用ng的错误?不使用新值更新,javascript,html,angularjs,validation,Javascript,Html,Angularjs,Validation,我对棱角有点陌生,遇到了一个非常奇怪的问题,我相信其他人也遇到过 假设这是我的按钮的代码: <button type="submit" ng-click="submit(something)" id="coolButton" ng-disabled="type === 0 || code === ''" >Check-In</button> 签入 因此,基本上,如果类型为0或代码为nothing(无文本),则此按钮将被禁用 现在是我
<button type="submit" ng-click="submit(something)" id="coolButton"
ng-disabled="type === 0 || code === ''"
>Check-In</button>
签入
因此,基本上,如果类型为0或代码为nothing(无文本),则此按钮将被禁用
现在是我的问题开始的地方:如果我加载带有type=0
和code=''
的页面,那么肯定会禁用它。如果我同时更改了这两个值,那么按钮当然会被启用
但是,如果我将值更改回0
和'
,则按钮不会再次禁用。事实上,我知道这些值实际上是0和“”,因为我已经在页面上打印了它们的值
是什么原因导致禁用ng无法再次运行表达式?I请检查上述场景是否正常工作:
<div ng-controller="HomeCtrl">
<button type="submit"
ng-click="submit(something)"
id="coolButton"
ng-disabled="type === 0 || code === ''"
>Check-In</button><br />
<div>type: <input ng-model="type" type="number" /></div>
<div>code: <input ng-model="code" type="text" /></div>
<div>is type equal zero: {{type === 0 }}</div>
<div>is type code empty: {{code === '' }}</div>
</div>
<script type="text/javascript">
var app = angular
.module('MyApp', [])
.controller('HomeCtrl', ['$scope', function ($scope) {
$scope.something = function(sth){alert(sth)};
$scope.type = 0;
$scope.code = "";
}])
</script>
另外,我在控制器回调的末尾添加了$scope.$apply(),但这并没有解决问题。在angularjs文档中,关于ng disable
我们不应该这样做,因为它会使按钮在Chrome/Firefox上启用,但在IE8和旧版IEs上不会启用。
是否有替代ng disabled的方法?当我测试IE和Firefox时,它的功能完全相同。这个问题也存在于某些带有ng hidem的标签上,但我认为我应该首先关注这个问题。ngDisabled很好,@levi如果你真的阅读了文档,你会注意到不要执行disabled=“{{expression}}”
,但是ng disabled
很好。同样的注释也适用于ngSrc、ngClass等@Daniel Jamrozik,这应该有效,因此请提供一个实际的代码片段或JSFIDLE,以再现问题。@Daniel Jamrozik您最好在Plunker或JSFIDLE上共享代码,然后我们可以帮助调试。
// controller
$scope.Model = {
type : 0,
code : '',
}
// directive ngDisabled in the view
ng-disabled="Model.type === 0 || Model.code === ''"