我正在使用一些带有许多html组件的css html模板,并且有很多用于各种事物的数据属性。例如对于滑块,它有类似
的东西 <div class="slider slider-default">
<input type="text" data-slider class="slider-span" value="" data-slider-orientation="vertical" data-slider-min="0" data-slider-max="200" data-slider-value="{{ slider }}" data-slider-selection="after" data-slider-tooltip="hide">
</div>
这里我试图绑定值
data-slider-value="{{ slider }}"
但它没有用。可变&#39;滑块&#39;在$ scope中设置为:
$scope.slider = 80;
当我将其绑定为:
时,相同的值80显示为正确 <h4>I have {{ slider }} cats</h4>
我也试过
ng-attr-data-slider-value="{{ slider }}"
它没有用。
该指令有类似的内容
function slider() {
return {
restrict: 'A',
link: function (scope, element) {
element.slider();
}
}
};
其中element.slider();
为每个滑块调用bootstrap-slider.js
中的代码(来自here)。
答案 0 :(得分:4)
我玩了一段时间,并想出了一些选择。请参阅我的Plunkr,了解相关信息。
这将适用于您问题中的HTML。以下是您应该将指令代码更改为。
app.directive('slider', function slider() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
attrs.$observe('sliderValue', function(newVal, oldVal) {
element.slider('setValue', newVal);
});
}
}
});
如果在拖动滑块手柄时需要更新scope属性,则应将指令更改为以下内容:
app.directive('sliderBind', ['$parse',
function slider($parse) {
return {
restrict: 'A',
link: function(scope, element, attrs) {
var val = $parse(attrs.sliderBind);
scope.$watch(val, function(newVal, oldVal) {
element.slider('setValue', newVal);
});
// when the slider is changed, update the scope
// property.
// Note that this will only update it when you stop dragging.
// If you need it to happen whilst the user is dragging the
// handle, change it to "slide" instead of "slideStop"
// (this is not as efficient so I left it up to you)
element.on('slideStop', function(event) {
// if expression is assignable
if (val.assign) {
val.assign(scope, event.value);
scope.$digest();
}
});
}
}
}
]);
此标记略有变化:
<div class="slider slider-default">
<input type="text" data-slider-bind="slider2" class="slider-span" value="" data-slider-orientation="vertical" data-slider-min="0" data-slider-max="200" data-slider-selection="after" data-slider-tooltip="hide" />
</div>
请注意使用data-slider-bind
属性指定要绑定的scope属性,以及缺少data-slider-value
属性。
希望这两个选项中的一个是你所追求的。
答案 1 :(得分:0)
我使用 .attr 并且它对我有用。试试这个:
attr.data-slider-value="{{slider}}"