我已经创建了一个包装jQuery插件的指令,并将插件的配置对象从控制器传递给指令.(作品)
在config对象中是我想要在事件上调用的回调.(作品)
在回调中,我想修改控制器的$ scope上的属性,这不起作用.Angular不承认该属性由于某种原因而发生了变化,这使我相信回调中的$ scope与控制器的$ scope不同.我的问题是我不知道为什么.
任何人都能指出我正确的方向吗?
app.js
var app = angular.module('app', [])
.directive('datepicker', function () {
return {
restrict: 'A',
link: function (scope, element, attrs) {
// Uncommenting the line below causes
// the "date changed!" text to appear,
// as I expect it would.
// scope.dateChanged = true;
var dateInput = angular.element('.datepicker')
dateInput.datepicker(scope.datepickerOpts);
// The datepicker fires a changeDate event
// when a date is chosen. I want to execute the
// callback defined in …Run Code Online (Sandbox Code Playgroud) 我正在为我的表单使用jQuery Validation插件.它允许您更改errorElement并使用包装器选项包装 errorElement .但是,我想在 errorElement中插入一个元素,如下所示:
<label class="error"><em></em>Error message goes here</label>
有没有简单的方法来完成插入em标签?
我尝试使用errorPlacement选项(见下文)预先添加em标签,但似乎插件正在替换errorElement的内容.
$.validator.setDefaults({
errorPlacement: function(error, element) {
error.prepend('<em/>');
error.insertBefore(element);
}
});Run Code Online (Sandbox Code Playgroud)
我还尝试使用showErrors选项预先添加em标签(见下文).再次,似乎插件后来正在替换errorElement的内容.
$.validator.setDefaults({
showErrors: function(errorMap, errorList) {
for (var i = 0; i < errorList.length; i++) {
var error = errorList[i],
$label = this.errorsFor(error.element),
$element = $(error.element);
if ($label.length && $label.find('em').length == 0) {
$label.prepend('<em/>');
}
}
this.defaultShowErrors();
}
});Run Code Online (Sandbox Code Playgroud)
我也尝试修改插件,以便在生成错误元素时,<em>标记被预先添加.这有效,直到我专注于有错误的表单元素,然后删除em标记.(这是因为当我在字段中聚焦和/或键入时,jQuery验证不断更新错误元素的内容,因此擦除了在创建错误元素时添加的em标记.)