如何在指令link中访问ngModel的子引用
How to access child ngModel reference in directive link?
我将bootstrap-colorpicker与angular指令结合使用。
在我的表单是colorpicker,我想看的变化。由于颜色选择器的值是由这个颜色选择器jQuery插件更新的,所以这不起作用。我明白我必须在我的指令中实现这一点,但不知道如何。
里面我有以下标记:
<div data-colorpicker class="input-group colorpicker-element">
<input id="background" type="text" class="form-control" data-ng-model="myModel.background" />
<span class="input-group-addon"><i></i></span>
</div>
这个标记是bootstrap-colorpicker需要的。注意:我添加了data-colorpicker指令,它初始化了颜色选择器:
myDirectives.directive('colorpicker', function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
element.colorpicker();
}
};
});
到目前为止一切顺利。请注意,颜色选择器是与换行div挂钩的,我认为这是导致问题的原因。
我将代码扩展为:
myDirectives.directive('colorpicker', function() {
return {
restrict: 'A',
require : '?ngModel',
link: function(scope, element, attrs, ngModel) {
element.colorpicker().on('changeColor', function(ev) {
scope.$apply(function() {
ngModel.$setViewValue(ev.color.toHex());
});
});
}
};
});
,但问题是ngModel是在输入上定义的,而不是在div上。
我能访问子作用域/ngModel吗?
最简单的方法是把所有的html包在一个指令中。
模板:
<div class="input-group colorpicker-element">
<input id="background" type="text" class="form-control" data-ng-model="ngModel" />
<span class="input-group-addon"><i></i></span>
</div>
指令代码:
myDirectives.directive('colorpicker', function() {
return {
restrict: 'E',
require : '?ngModel',
scope: {
'ngModel': '='
},
link: function(scope, element, attrs, ngModel) {
element.colorpicker().on('changeColor', function(ev) {
scope.$apply(function() {
ngModel.$setViewValue(ev.color.toHex());
});
});
},
templateUrl: '/partials/colorpicker.html'
};
});
然后你可以在controller:
中使用它<colorpicker ng-model="myModel.background" />
相关文章:
- 引用对象中的通用值
- 如何在JavaScript中将字符串转换为函数引用
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 在动态创建的元素上获取对特定选择器的引用
- IIFE中的函数引用不可用
- 如何通过引用var Using DataTables来进行分页或排序
- 如何在创建键时引用来自同一对象的键
- Datatables:通过DOM数据源中的名称引用列
- 自引用回调
- 引用类变量中的原型方法
- 无法获取属性'selectedIndex'的未定义引用或null引用
- Vanilla JS通过引用移除数组元素
- 通过引用传递JavaScript对象
- 无法获取属性'Id'使用Knockout.js的未定义或空引用API
- "“;变量未引用正确的对象
- 获取对使用Tampermonkey使用javascript创建的元素的引用
- 如何将ngrepeat下的ngmodel绑定到$scope
- 引用vue.js中v-for中的上一个值
- ngModel 引用,当推送到数组中时
- 如何在指令link中访问ngModel的子引用