angular.js链接函数未定义

时间:2014-06-08 12:32:49

标签: angularjs

我尝试实现一个Angular.js指令,该指令将禁用该按钮,直到返回promise。我找到了一些例子。但是当我尝试在指令链接中调用函数时。它总是告诉我newClick()函数是未定义的。有人可以告诉我为什么吗?非常感谢。

    angular.module('myApp.directives.newClick', [])
  .directive('newClick', [function () {
    return {
      scope: {
        newClick: '&'
      },
      link: function (scope, iElement, iAttrs) {
        iElement.bind('click', function () {
          iElement.prop('disabled', true);
          scope.newClick().finally(function () {
            iElement.prop('disabled', false);
          });
        });
      }
    };
  }]);

1 个答案:

答案 0 :(得分:0)

这应该可以正常工作:

  1. 在元素上正确设置了newClick指令。
  2. 它引用一个返回promise的函数。

  3. 例如:

    <button new-click="clickFunc()">Click me</button>
    
    app.controller('myCtrl', function ($q, $scope, $timeout) {
        $scope.clickFunc = function () {
            var deferred = $q.defer();
            $timeout(function () {
                deferred.resolve('Hello, wolrd !');
            }, 2000);
            return deferred.promise;
        };        
    });
    

    另请参阅此 short demo