簡體   English   中英

如何使用AngularJS監視jQuery修改的屬性值的變化

[英]How to watch for changes in attribute value modified by jQuery, using AngularJS

我有一個屬性aria-valuenow ,當用戶執行評分或在提交審閱表單時更改評分時,該屬性會由jQuery在Rateit星級星級jQuery插件中進行修改。

以下是我用來顯示插件星星的html代碼段。

<div class="review">
    <input type="range" value="0" step="0.25" id="backing4">
    <div class="rateit" plugin-rate-it="{backingfld: '#backing4', resetable: 'true', ispreset: 'false', min: 0, max: 5}" data-rateit-backingfld="#backing4" data-rateit-resetable="false"  data-rateit-ispreset="true" data-rateit-min="0" data-rateit-max="5"></div>
</div>

在上面的html plugin-rate-it中,我已經初始化了該插件,否則不顯示星星。 以下是該指令的代碼。

myApp.directive('pluginRateIt', function() {
    return {
        restrict: 'A',
        link: function(scope, element, attrs) {
            $(element).rateit(scope.$eval(attrs.pluginRateIt));
        }
    };
});

現在,下面是頁面為上面的html代碼加載時呈現的html。 我已經從頁面的源代碼中獲得了它。

 <div class="review">
      <input type="range" value="0" step="0.25" id="backing4" class="ng-pristine ng-valid" style="display: none;">
      <div class="rateit" plugin-rate-it="{backingfld: '#backing4', resetable: 'true', ispreset: 'false', min: 0, max: 5}" data-rateit-backingfld="#backing4" data-rateit-resetable="false" data-rateit-ispreset="true" data-rateit-min="0" data-rateit-max="5">
        <button id="rateit-reset-2" data-role="none" class="rateit-reset" aria-label="reset rating" aria-controls="rateit-range-2" style="display: none;"></button>
        <div id="rateit-range-2" class="rateit-range" tabindex="0" role="slider" aria-label="rating" aria-owns="rateit-reset-2" aria-valuemin="0" aria-valuemax="5" aria-valuenow="0" aria-readonly="false" style="width: 80px;     height: 16px;">
            <div class="rateit-selected rateit-preset" style="height: 16px; width: 0px; display: block;"></div>
            <div class="rateit-hover" style="height: 16px; display: none; width: 0px;">             
        </div>
        </div>
      </div>
</div>

因此,當用戶執行評分或更改評分時,唯一會更改的屬性是aria-valuenow屬性。

有人可以幫助我理解我如何監視aria-valuenow屬性的值的更改,以便我可以在查看表單的ng-model中捕獲該值並將其提交。

最快,最hackest的方法是在這里 本質上,在控制器中編寫一個函數來檢查並返回area-valuenow的值。 然后$watch它的輸出,並在它更改時在watch的回調中執行某些操作。

不幸的是,這意味着角度將不斷運行該檢查和返回功能。 在小型應用程序上,您可能會擺脫這種情況。

一種更具角度的計划是修改插件,以使其在控制器內運行,並且可以在修改DOM的同時修改范圍值。 然后,您可以更有效地觀察該范圍值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM