【问题:发现与解决】angularJs指令在dijit控件中的使用
由于公司主要用的JS框架是DOJO,最近又运用了angularJs。因此,不可能避免的遇到dojo控件和angular指令(directive)共用时遇到的一些问题,问题如下:
<input id="inheritCbx_modelPara" type="checkbox" data-dojo-type="dijit/form/CheckBox" ng-model="isInheritPara" ng-change="showInheritPara()" value="继承"/><br/>
我想用dijit的CheckBox控件的同时给这个input添加ng-model和ng-change这两个指令。显然上面的代码是愚蠢的,因为代码中的angular指令更不会被dijit的控件给解析,控件解析后的html如下:

我们写的input被dijit解析成了如上的代码,因此我必须想办法在这个div里面的input中添加ng-model和ng-change指令并且让angular的解析方法$compile去解析指令添加之后的input。
于是乎,我在controller里面做了如下操作:
var link = $compile(query("#inheritCbx_modelPara")[0].outerHTML.replace(/>/, " ") + 'ng-model="isInheritPara" ' + 'ng-change="showInheritPara()">');
var node = link($scope);
query("#dijitCheckBox")[0].removeChild(query("#inheritCbx_modelPara")[0]);
query("#dijitCheckBox")[0].appendChild(node[0]);
这样一来,虽然指令被正确的加载了,但是却发现生成的CheckBox控件被click和focus时候的样式却无法正常显示了,看了该控件的代码后我发现CheckBox控件被加载的时候在input中监听了click和focus事件,然而当我们用$compile去重新解析input的时候,里面的click和focus事件被angular重新监听了,因此才会出现控件样式无法正常显示的问题。然后我在确定了不影响控件自身显示的情况下修改了CheckBox控件的template.html文件,把监听的click、focus事件放在input的父div上,这样就不会和angular发生冲突了。
<div id="dijitCheckBox" class="dijit dijitReset dijitInline"data-dojo-attach-point="focusNode" data-dojo-attach-event="ondijitclick:_onClick" role="presentation"
>
<input ${!nameAttrSetting} type="${type}" role="${type}" aria-checked="false" ${checkedAttrSetting} class="dijitReset dijitCheckBoxInput"/>
</div>
【问题:发现与解决】angularJs指令在dijit控件中的使用的更多相关文章
- WPF解决按钮上被透明控件遮盖时无法点击问题
原文:WPF解决按钮上被透明控件遮盖时无法点击问题 IsHitTestVisible="False" 在控件上设置如上属性即可,即可让透明控件不触发点击效果
- 基于AngularJs的上传控件-angular-file-upload
今天跟大家分享的是一个依赖于angular的上传控件. 前段时间做项目遇到一个需求是上传文件,大概需要实现的样式是这样子的,见下图: 需要同时上传两个文件.并且规定文件格式和文件大小.因为前端框架使用 ...
- angularjs 整合bootstrap 时间控件
一.引入js <link href="${basePath}/static/plugin/bootstrap/css/bootstrap-datetimepicker.min.css& ...
- 记录下帮助一位网友解决的关于android子控件的onTouch或onClick和父OnTouch 冲突的问题。
前三天收到位网友的私信求助,问题大概如标题所示.具体是下面的情况,个人感觉,这个问题挺有趣,也会在实际项目开发中很常见.不想看前奏的请直接跳至解决方法. 问题原型: 父控件是自定义的 LinearLa ...
- 解决嵌入WinForm的WPF控件无法显示图片问题
解决办法是在控件初始化时,通过下面方法再次加载图片: ucCanvas.CreateCoordinateImage.Source = GetImageIcon(global::MainApplicat ...
- 解决UIScrollView,UIImageView等控件不能响应touch事件的问题
关于UIScrollView,UIImageView等控件不能响应touch事件,主要涉及到事件响应者链的问题,如果在UIScrollView,UIImageView等控件添加了子View,这样事件响 ...
- 张奎师弟参与devexpress chartControl绘图--解决了devexpress的chartControl控件不能添加系列的问题
using DevExpress.XtraCharts; using System; using System.Collections.Generic; using System.ComponentM ...
- 解决WPF两个图片控件显示相同图片因线程占用,其中一个显示不全的问题
在做项目的过程中遇到这样一个问题,下面提出一种解决方法,主要思想是图片的Copy,如还有其他方法,欢迎交流. 在前端图片控件绑定显示时,使用转换器进行转义绑定 (1)转换器: public cla ...
- jquery on事件在IE8下失效的一种情况,及解决方法/bootstrap空间绑定控件事件不好用
同事在复制bootstrap中的select控件之后,发现用$('.selectpicker').selectpicker();刷新下拉框控件不好使,后来发现是用原生js克隆的方法obj.cloneN ...
随机推荐
- LinkedList简要分析
LinkedList概述 LinkedList 实现List接口,底层是双向链表,非线程安全.LinkedList还可以被当作堆栈.队列或双端队列进行操作.在JDK1.7/8 之后取消了循环,修改为双 ...
- Scrum Meeting 汇总
Alpha [Alpha]Scrum Meeting 0&1 [Alpha]Scrum Meeting 2 [Alpha]Scrum Meeting 3 [Alpha]Scrum Meetin ...
- hiho# 1398 最大权闭合子图 网络流
题目传送门 题意:给出n个活动,m个人,请人需要花费$a[i]$的钱,举办一次活动可以赚$b[i]$的钱,但是需要固定的几个人在场,一个人只需要请一次后就必定在场,问最大收益. 思路: 下列结论来自h ...
- 线段树+单调栈+前缀和--2019icpc南昌网络赛I
线段树+单调栈+前缀和--2019icpc南昌网络赛I Alice has a magic array. She suggests that the value of a interval is eq ...
- c# SocketAsyncEventArgs类的使用 IOCP服务器
要编写高性能的Socket服务器,为每个接收的Socket分配独立的处理线程的做法是不可取的,当连接数量很庞大时,服务器根本无法应付.要响应庞大的连接数量,需要使用IOCP(完成端口)来撤换并处理响应 ...
- sublime text 3 快捷键&&使用技巧
参考文章:https://github.com/jikeytang/sublime-text 这里有很多技巧http://www.jianshu.com/p/3cb5c6f2421c/ 置顶: Ctr ...
- Spring整合Hibernate_数据源Datasource_dbcp连接池
1, Spring指定 datasource DataSource接口,在javax.sql包,里边有一个getConnection()方法.提供了标准化的取得连接的方式.只要实现了这个接口.Sun ...
- elixir二进制模式匹配
for << << b1::size(2), b2::size(3), b3::size(3) >> <- "hello" >> ...
- jsp tomcat jdk版本对应
jsp使用jdk8时,需要tomcat7以及以上版本,jsp在使用jdk7的时候,tomcat使用tomcat6即可
- Win10正式版关机时自动更新怎么关闭
http://jingyan.baidu.com/article/64d05a02462d6fde55f73b97.html