0

我正在嘗試從chrome擴展更改特定網站的輸入值。爲了做到這一點,我在我的內容腳本中使用jQuery。它適用於大多數情況,但是當它是AngularJS視圖的一部分時,我沒有設法改變輸入的值。當我使用let say kendoUI時,我發現了同樣的問題。我試圖設置值$('element').val('value'),然後嘗試調用模糊和更改事件,但沒有任何成功。 我經歷過的可能有99%的帖子涉及到這個話題,但是還是找不到工作解決方案。使用jQuery更改文本輸入值 - Chrome擴展

+1

http://jimhoskins.com/2012/12/17/angularjs-and-apply.html理解你的問題最好的文章...... –

+0

是不是意味着我的問題沒有解決的辦法? –

+0

不,這是非常基本的概念,但你應該知道它,當你在角度外操縱dom時,角度不知道任何關於它的東西,這就是爲什麼你看不到任何改變......爲了解決它,你應該包裝你的jquery函數$ scope.apply()然後角獲得更改... –

回答

0

你只需要調用$ scope.apply()爲了讓角度知道更新綁定。這主要是因爲默認情況下,angular並不知道您在jQuery中所做的更改。

下面是一個示例代碼,這裏是一個jsFiddle。希望這可以幫助。

app.controller('testCtrl', ['$scope', function ($scope) { 

    $scope.changeValue = function() { 
    $('#test').val("new Value"); 
     $scope.apply(); 
    } 

    <div class="form-inline"> 
      <input type="text" id="test" value="test"> 
      <input type="submit" value="submit" ng-click="changeValue()"> 
    </div> 
+0

謝謝你的回答!但可能我沒有足夠清楚地解釋我的問題。想象一下,你有一個網站,其中有一個文本輸入(你沒有代碼,你不是這個網站的所有者)。形成你的Chrome擴展你必須改變這個輸入的值。爲了做到這一點,我使用jQuery.va()。這裏是我的問題,這種方法不適用於MVC模式實現時的情況,就像使用angularjs開發網站時一樣。 –

+1

我沒有使用Chrome擴展名嘗試過,所以我不確定它。我發現了一個類似的問題,您可能會發現它有點幫助。 http://stackoverflow.com/questions/15595972/scope-apply-doesnt-do-anything-in-a-chrome-extension-popup – Ren