Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将jquery生成的隐藏字段绑定到指令中的angularjs模型_Angularjs_Angularjs Directive - Fatal编程技术网

将jquery生成的隐藏字段绑定到指令中的angularjs模型

将jquery生成的隐藏字段绑定到指令中的angularjs模型,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我正在尝试使用jquery插件创建一个captcha指令 我对angularjs比较陌生,似乎找不到一种方法来做到这一点。基本上我想要一个验证码来验证一个人正在注册他们的帐户。调用element.realperson()将生成一个隐藏的输入字段,其中包含一些哈希值,我需要将其与服务器端输入的输入进行比较 因此,如果我调用这个非常基本且不完整的指令,它会将newUser.captchaInput模型绑定到输入表单,但我一辈子都不知道如何获取隐藏字段值$(''captcha_hash').val()

我正在尝试使用jquery插件创建一个captcha指令

我对angularjs比较陌生,似乎找不到一种方法来做到这一点。基本上我想要一个验证码来验证一个人正在注册他们的帐户。调用element.realperson()将生成一个隐藏的输入字段,其中包含一些哈希值,我需要将其与服务器端输入的输入进行比较

因此,如果我调用这个非常基本且不完整的指令,它会将newUser.captchaInput模型绑定到输入表单,但我一辈子都不知道如何获取隐藏字段值$(''captcha_hash').val(),并以某种方式将其包含在表单数据中。理想情况下为newUser.captchahsh

angular.module('vah').directive("captcha", ->
  restrict: "A"
  require: '?ngModel'
  link: (scope, element, attrs, ngModel) ->
    return if !ngModel

    optionsObj = {
      length: 5
    }

  element.realperson(optionsObj)

  # need to bind $('#captcha_hash').val() to a newUser.captchaHash model, or 
  add the model to that generated input field.

)

<input captcha id="defaultReal" ng-model="newUser.captchaInput">
angular.module('vah')。指令(“验证码”),->
限制:“A”
要求:“?ngModel”
链接:(范围、元素、属性、ngModel)->
返回if!ngModel
选项OBJ={
长度:5
}
元素。realperson(选项Obj)
#需要将$('#captcha_hash').val()绑定到newUser.captchahsh模型,或
将模型添加到生成的输入字段中。
)

我相信有一个简单的解决方案,非常感谢您的帮助。

多亏了来自不同编程论坛的人的帮助,代码才可以正常工作。这绝对不是理想的,我还有很多东西要学,但这很有效

angular.module('vah').directive("captcha", ($timeout, $parse) ->
  restrict: "A"
  require: '?ngModel'
  link: (scope, element, attrs, ngModel) ->
    return if !ngModel

    optionsObj = {
      length: 5
    }

    $timeout(->
      attrs.foo = $('#captcha_hash')
      hashSet = $parse(attrs.ngModel).assign
      scope.$watch(attrs.foo.val(), (newVal) ->
        hashSet(scope, newVal)
      )
    , 300)
    element.realperson(optionsObj)

)
此外,我还将包含用于对这个特定验证码进行哈希处理的ruby代码,因为与javascript或其PHP/Java示例中的处理方式相比,我在使用Bignum和ruby时遇到了问题

module CaptchaHashing
  module ClassMethods
    def rp_hash(value)
      hash_value = 5381
      value = value.upcase
      value.chars.each do |c|
        hash_value = ((left_shift_32(hash_value, 5)) + hash_value) + c.ord
        puts hash_value
      end
      hash_value
    end

    def left_shift_32 x, shift_amount
      shift_amount &= 0x1F
      x <<= shift_amount
      x &= 0xFFFFFFFF 

      if (x & (1<<31)).zero?
       x
      else
       x - 2**32
      end
    end

  end

  def self.included(receiver)
    receiver.extend ClassMethods
  end
end

祝你好运

工作代码,感谢来自不同编程论坛的人的帮助。这绝对不是理想的,我还有很多东西要学,但这很有效

angular.module('vah').directive("captcha", ($timeout, $parse) ->
  restrict: "A"
  require: '?ngModel'
  link: (scope, element, attrs, ngModel) ->
    return if !ngModel

    optionsObj = {
      length: 5
    }

    $timeout(->
      attrs.foo = $('#captcha_hash')
      hashSet = $parse(attrs.ngModel).assign
      scope.$watch(attrs.foo.val(), (newVal) ->
        hashSet(scope, newVal)
      )
    , 300)
    element.realperson(optionsObj)

)
此外,我还将包含用于对这个特定验证码进行哈希处理的ruby代码,因为与javascript或其PHP/Java示例中的处理方式相比,我在使用Bignum和ruby时遇到了问题

module CaptchaHashing
  module ClassMethods
    def rp_hash(value)
      hash_value = 5381
      value = value.upcase
      value.chars.each do |c|
        hash_value = ((left_shift_32(hash_value, 5)) + hash_value) + c.ord
        puts hash_value
      end
      hash_value
    end

    def left_shift_32 x, shift_amount
      shift_amount &= 0x1F
      x <<= shift_amount
      x &= 0xFFFFFFFF 

      if (x & (1<<31)).zero?
       x
      else
       x - 2**32
      end
    end

  end

  def self.included(receiver)
    receiver.extend ClassMethods
  end
end

祝你好运

如果你喜欢reCaptcha,你可以尝试使用。

如果你喜欢reCaptcha,你可以尝试使用。

没关系@MichaelRobinson。你可以通过再次点击箭头来撤销它:)投票被锁定,除非答案被编辑(谢谢提示:P)没关系@MichaelRobinson。您可以通过再次单击箭头来撤销它:)投票被锁定,除非答案被编辑(感谢提示:P)