为什么我的按钮在禁用ng时被禁用?

时间:2015-07-15 09:30:43

标签: javascript angularjs angularjs-ng-disabled

我使用angular并尝试禁用按钮,如果我的范围中的值为'true'。我看到ng-disabled似乎是完美的,但我不知道为什么它不起作用......

这是我的HTML:

<div ng-controller="MyCtrl">
        <h4>{{ building.isBuildable }}</h4>
        <button ng-click='build(building.id)' 
                class="btn btn-primary" 
                ng-disabled="!build.isBuildable">
       Build
       </button>
</div>

我的角度:

var myApp = angular.module('myApp',[]);

myApp.factory('Colony', function () {
    'use strict';
    return {
        isBuildable: function () {
            return true;
            //return false;
        }
    };
});
myApp.controller('MyCtrl', ['$scope', 'Colony', function ($scope, Colony) {
    'use strict';
     var building = {
         name: 'Building Name',
         isBuildable: null
     };
     $scope.building = building;
     $scope.building.isBuildable = Colony.isBuildable();   
     $scope.build = function (id) {

     };
}]);

http://jsfiddle.net/xz7arL0s/1/

正如您在jsfiddle中看到的那样,即使isBuildable为真,也始终禁用它。我在这里缺少什么?

1 个答案:

答案 0 :(得分:4)

你有一个拼写错误,你在ng-disabled绑定中指的是构建而不是构建

将您的代码更新为:

<div ng-controller="MyCtrl">
        <h4>{{ building.isBuildable }}</h4>
        <button ng-click='build(building.id)' 
                class="btn btn-primary" 
                ng-disabled="!building.isBuildable">
       Build
       </button>
</div>

我也在Fiddle编辑了这个。