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 === ''"