今天在封装一个Jquery插件的时候,在用jquery处理绑定事件时需要访问scope去更新绑定model的值,
<span style="font-size:32px;color:#ff0000;">使用$.proxy在将事件的上下文改为scope。</span>
代码如下:
commonDirective.directive('commonDate', function() {
var defaultUrl = CONSTANT.COMMONDIRECTIVE.PATH + 'commonDate.html';
return {
templateUrl : function(elem, attrs) {
return attrs.myTemplateUrl || defaultUrl;
},
scope : {
placeholder : '@myPlaceholder',
model : '=myModel'
},
replace : true,
link : function(scope, element, attrs, ctrl) {
$(element).closest('.input-group').datepicker({
todayBtn : true,
clearBtn : true,
language : "zh-CN",
orientation : "top auto",
calendarWeeks : true,
autoclose : true,
todayHighlight : true
});
<span style="color:#cc0000;"> $(element).closest('.input-group').on('changeDate', $.proxy(function(event) {</span>
var me = this;
this.model = event.date.Format('yyyy年MM月dd日');
this.$apply();
}, scope));
},
controller : function($scope, $element, $attrs, $http) {
}
}
});