我正在嘗試從chrome擴展更改特定網站的輸入值。爲了做到這一點,我在我的內容腳本中使用jQuery。它適用於大多數情況,但是當它是AngularJS視圖的一部分時,我沒有設法改變輸入的值。當我使用let say kendoUI時,我發現了同樣的問題。我試圖設置值$('element').val('value')
,然後嘗試調用模糊和更改事件,但沒有任何成功。 我經歷過的可能有99%的帖子涉及到這個話題,但是還是找不到工作解決方案。使用jQuery更改文本輸入值 - Chrome擴展
回答
你只需要調用$ 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>
謝謝你的回答!但可能我沒有足夠清楚地解釋我的問題。想象一下,你有一個網站,其中有一個文本輸入(你沒有代碼,你不是這個網站的所有者)。形成你的Chrome擴展你必須改變這個輸入的值。爲了做到這一點,我使用jQuery.va()。這裏是我的問題,這種方法不適用於MVC模式實現時的情況,就像使用angularjs開發網站時一樣。 –
我沒有使用Chrome擴展名嘗試過,所以我不確定它。我發現了一個類似的問題,您可能會發現它有點幫助。 http://stackoverflow.com/questions/15595972/scope-apply-doesnt-do-anything-in-a-chrome-extension-popup – Ren
- 1. 使用Chrome擴展插入CSS更改
- 2. 使用Jquery更改文件擴展名
- 3. 使用jQuery更改輸入控件值
- 4. Chrome擴展 - 無法獲得輸入值
- 5. 使用jQuery的Chrome擴展
- 6. Chrome擴展和JQuery入門
- 7. 使用jQuery將HTML文本輸入更改爲密碼輸入
- 8. Chrome擴展插入文本問題
- 9. 使用Chrome擴展更改瀏覽器的日期/時間值
- 10. Chrome擴展程序使用內容腳本更改innerText
- 11. 使用jQuery動態更改輸入值
- 12. 使用Jquery更改表單輸入值
- 13. 用css更改文本輸入的值?
- 14. 如何更改文本以輸入和使用jQuery創建輸入值?
- 15. 使用javascript更改AngularJS輸入文本值
- 16. 選擇類型使用chrome擴展更改上下文菜單
- 17. Chrome擴展替換文本
- 18. 使用Chrome擴展名修改按鈕文本
- 19. 在擴展程序中獲取來自Chrome的文本輸入
- 20. 在Chrome中使用jquery的文本輸入沒有觸發更改事件
- 21. 單擊圖標時如何更改Chrome擴展徽章文本?
- 22. Chrome擴展程序正在更改popup.html文本
- 23. Chrome瀏覽器擴展javascript,更改textarea中的選定文本
- 24. jquery 1.10版本:用戶輸入的輸入值不能更改
- 25. JQuery和Chrome擴展
- 26. JQuery的輸入更改值
- 27. 使用Chrome擴展程序更改內嵌框架中的文本
- 28. 如何使用Google Chrome擴展程序更改選定文本的CSS
- 29. jQuery - 在更改輸入文本
- 30. CANT用戶輸入後更改文本輸入與jQuery
http://jimhoskins.com/2012/12/17/angularjs-and-apply.html理解你的問題最好的文章...... –
是不是意味着我的問題沒有解決的辦法? –
不,這是非常基本的概念,但你應該知道它,當你在角度外操縱dom時,角度不知道任何關於它的東西,這就是爲什麼你看不到任何改變......爲了解決它,你應該包裝你的jquery函數$ scope.apply()然後角獲得更改... –