4

我想根据表单验证禁用我的 jQuery 按钮。根据文档,使用以下语法的常规按钮相当容易:

 <button ng-click="save(user)" ng-disabled="form.$invalid">Save</button>

但是,当更改为 jQuery UI 按钮时,它不再起作用。我假设 Angular 在 jQuery UI 和 AngularJS 之间没有真正的绑定,因此需要一个指令来执行以下操作:

$("button" ).button( "option", "disabled" );

是这种情况还是有其他选择?我正在尝试做的一个 jsFiddle 在这里:http: //jsfiddle.net/blakewell/vbMnN/

我的代码如下所示:

看法

<div ng-app ng-controller="MyCtrl">
    <form name="form" novalidate class="my-form">
        Name: <input type="text" ng-model="user.name" required /><br/>
        Email: <input type="text" ng-model="user.email" required/><br/>
        <button ng-click="save(user)" ng-disabled="form.$invalid">Save</button>
    </form>
</div>

控制器

function MyCtrl($scope) {
    $scope.save = function (user) {
        console.log(user.name);
    };

    $scope.user = {};

};

$(function () {
    $("button").button();
});
4

2 回答 2

6

好吧,问题在于角度,您应该制定指令来应用您的 JQuery 插件。

所以在这里你可以这样做:

//NOTE: directives default to be attribute based.

app.directive('jqButton', {
   link: function(scope, elem, attr) {
      //set up your button.
      elem.button();

      //watch whatever is passed into the jq-button-disabled attribute
      // and use that value to toggle the disabled status.
      scope.$watch(attr.jqButtonDisabled, function(value) {
         $("button" ).button( "option", "disabled", value );
      });
   }
});

然后在标记中

<button jq-button jq-button-disabled="myForm.$invalid" ng-click="doWhatever()">My Button</button>
于 2013-01-30T16:02:15.187 回答
1

这对我有用:

app.directive('jqButton', function() {
      return function(scope, element, attrs) {
          element.button();

          scope.$watch(attrs.jqButtonDisabled, function(value) {
              element.button("option", "disabled", value);
          });
      };
});

使用此标记:

<input type="button" value="Button" jq-button jq-button-disabled="myForm.$invalid" />
于 2013-04-19T13:18:28.260 回答