使用角度js生成的密码不起作用

时间:2018-01-31 17:14:28

标签: angularjs passwords

我想让密码自动生成并将其传递给控制器​​:

这是我的view.jsp:

<tr>
                <td class="leftDetails">Password</td>
                <td class="rightDetails"><input type="text" name="password" ng-model="newUser.password" ng-disabled="isEditMode" id="p"/></td>
                <td class="rightDetails"><input type='button' value ='generate' onclick='document.getElementById("p").value = Password.generate(16)' ng-show="add"></td>
                <td class="leftDetails"></td>
                <td class="rightDetails"></td>
            </tr>
  <script>
var Password = {

      _pattern : /[a-zA-Z0-9_\-\+\.]/,


      _getRandomByte : function()
      {
        if(window.crypto && window.crypto.getRandomValues) 
        {
          var result = new Uint8Array(1);
          window.crypto.getRandomValues(result);
          return result[0];
        }
        else if(window.msCrypto && window.msCrypto.getRandomValues) 
        {
          var result = new Uint8Array(1);
          window.msCrypto.getRandomValues(result);
          return result[0];
        }
        else
        {
          return Math.floor(Math.random() * 256);
        }
      },

      generate : function(length)
      {
        return Array.apply(null, {'length': length})
          .map(function()
          {
            var result;
            while(true) 
            {
              result = String.fromCharCode(this._getRandomByte());
              if(this._pattern.test(result))
              {
                return result;
              }
            }        
          }, this)
          .join('');  
      }    

    };

我的问题是想将生成的密码传递给我的控制器,它是空的 如何纠正。提前谢谢?

1 个答案:

答案 0 :(得分:0)

解决此问题的角度方法是更新输入的ng-model而不是选择元素(Jquery方式)。

而不是onClick使用ng-click="newUser.password = Password.generate(16)"