我有一个属性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
中捕获该值并提交。
答案 0 :(得分:1)
最快,最骇客的方法是here。本质上,在控制器中编写一个函数来检查并返回area-valuenow
的值。然后$watch
输出,并在手表更改时回调。
不幸的是,这意味着角度将不断运行检查和返回功能。在一个小应用程序上,你可能会逃避这个。
更具角度的计划是修改插件,使其在控制器内运行,并且可以在修改DOM的同时修改范围值。然后,您可以更有效地观察范围值。