第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

AngularJS瀏覽器通過使用指令自動填充的解決方法

AngularJS瀏覽器通過使用指令自動填充的解決方法

ibeautiful 2019-11-11 13:04:06
在AngularJS中提交表單并使用瀏覽器時,請記住密碼功能,并且在隨后的登錄嘗試中,讓瀏覽器使用用戶名和密碼填寫登錄表單,該$scope模型不會基于自動填充進行更改。我發(fā)現(xiàn)的唯一骯臟的技巧是使用以下指令:app.directive("xsInputSync", ["$timeout" , function($timeout) {    return {        restrict : "A",        require: "?ngModel",        link : function(scope, element, attrs, ngModel) {            $timeout(function() {                if (ngModel.$viewValue && ngModel.$viewValue !== element.val()) {                    scope.apply(function() {                        ngModel.$setViewValue(element.val());                    });                }                console.log(scope);                console.log(ngModel.$name);                console.log(scope[ngModel.$name]);            }, 3000);        }    };}]);問題在于,ngModel.$setViewValue(element.val());基于element.val()返回的值不會更改模型或視圖。我該怎么做?
查看完整描述

3 回答

?
慕田峪7331174

TA貢獻1828條經(jīng)驗 獲得超13個贊

顯然,這是Angular的已知問題,目前已打開


除了像您正在嘗試的工作以外,我不確定您可以在這里做什么??磥砟饺胝?。我無法讓我的瀏覽器記住您的密碼,因此不確定是否可以使用,但請看一下:


app.directive('autoFillSync', function($timeout) {

   return {

      require: 'ngModel',

      link: function(scope, elem, attrs, ngModel) {

          var origVal = elem.val();

          $timeout(function () {

              var newVal = elem.val();

              if(ngModel.$pristine && origVal !== newVal) {

                  ngModel.$setViewValue(newVal);

              }

          }, 500);

      }

   }

});

<form name="myForm" ng-submit="login()">

   <label for="username">Username</label>

   <input type="text" id="username" name="username" ng-model="username" auto-fill-sync/><br/>

   <label for="password">Password</label>

   <input type="password" id="password" name="password" ng-model="password" auto-fill-sync/><br/>

   <button type="submit">Login</button>

</form>

我認為您只需要稍微簡化一下方法即可。我絕對推薦的一件事是檢查ngModel.$pristine并確保您不會覆蓋某些不良用戶的輸入。另外,3秒可能太長。您不必在$ timeout中調(diào)用$ apply(),順便說一句,它應(yīng)該為您自動排隊$ digest。


真正的收獲是:您的瀏覽器會擊敗Angular來執(zhí)行嗎?那我的瀏覽器呢?


這可能是一場無法戰(zhàn)勝的戰(zhàn)爭,這就是Angular(或淘汰賽)無法輕松解決它的原因。指令初次執(zhí)行時,無法保證輸入中數(shù)據(jù)的狀態(tài)。甚至在Angular初始化時也沒有。...因此,這是一個棘手的問題。


查看完整回答
反對 回復(fù) 2019-11-11
  • 3 回答
  • 0 關(guān)注
  • 1116 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號