AngularJS element.find更改了我的对象
AngularJS element.find changes my objects
在查找元素时,我对angularJS有一点问题。当我使用element.find('type').attr('id' ,someid);
时,我的对象似乎发生了变化
这里有一些进一步的信息:
- 我只在一个位置使用指令
- 我使用angularjs 1.3.10
我准备了一个plunkerhttp://plnkr.co/edit/fW4HsbqRhMWiw8hSLTVH?p=preview这说明了我的意思。在找到另一个元素后,它会向上一个找到的元素发出警报。结果是,以前找到的元素与现在找到的元素相同(解释起来有点棘手,请参阅代码中的注释,了解我的确切意思)。
我的链接功能看起来是这样的:
function link(scope,element,attrs)
{
var _gradientCanvas = element.find('canvas').attr('id' , 'chColorGradient');
if(_gradientCanvas[0].id === 'chColorGradient')
{
var _gradientContext = _gradientCanvas[0].getContext('2d');
}
var _overlayCanvas = element.find('canvas').attr('id' , 'chColorGradientOverlay');
if(_overlayCanvas[0].id === 'chColorGradientOverlay')
{
var _overlayContext = _overlayCanvas[0].getContext('2d');
alert(_gradientCanvas[0].id); //alerts: chColorGradientOverlay , but it should alert chColorGradient
}
var _arcOverlay = element.find('canvas').attr('id' , 'chColorArcOverlay');
if(_arcOverlay[0].id === 'chColorArcOverlay')
{
var _arcContext = _arcOverlay[0].getContext('2d');
alert(_gradientCanvas[0].id);//alerts: chColorArcOverlay , but it should alert chColorGradient
alert(_overlayCanvas[0].id);//alerts: chColorArcOverlay , but it should alert chColorGradientOverlay
}
}
这是模板
<canvas class="chColorPickerCanvas" id="chColorGradient" width="255px" height="255px">
</canvas>
<canvas class="chColorPickerCanvas" id="chColorGradientOverlay" width="255px" height="255px">
</canvas>
<canvas class="chColorPickerCanvas" id="chColorArcOverlay" width="255px" height="255px">
</canvas>
我不太清楚它为什么这么做。我试着用netbeans调试它,但在我再次调用element.find后,它似乎真的改变了我的var _gradientCanvas
等。这是有原因的吗?
以下是实际发生的情况:
- CCD_ 3返回CCD_
element.find('canvas').attr('id' ,someid)
更改第一个返回画布的id
属性- 因此,
_gradientCanvas[0]
、_overlayCanvas[0]
和_arcOverlay[0]
都引用了element
内的同一元素-第一个画布。这解释了所描述的行为——attr('id' , 'chColorGradient')
不按id进行过滤,而是更改集合中第一个元素的id
如果你想通过id进行过滤,请查看以下文章:AngularJS:如何使用jqLite进行查找?
相关文章:
- 如何使用ng repeat中的选定输入更新我的对象
- 使用窗口对象练习我的对象文字函数
- 将变量的值分配给我的对象标识符 JSON
- AngularJS element.find更改了我的对象
- 为什么我得到“;不是函数错误”;对于我的对象方法
- 迭代我的对象对象的问题
- Angular没有't在http请求后更新我的对象
- I'我正在努力学习Angular——为什么不;t我的对象没有用ng repeat出现
- ng模型没有更新我的对象值
- Javascript:如何在不复制但链接的情况下将另一个对象 B 的方法混合到我的对象 A
- 处理我的对象的投射到编号
- 如何在数组中设置我的对象
- 为什么我的对象没有在 Angular 的视图中更新
- Ajax 请求不发送我的对象数据
- 填充对象时插入我的对象中的神秘“删除”键
- 如何动态更新我的对象
- 为什么我不能将数组作为成员添加到我的对象中
- Jquery在我的对象中覆盖了我的“this”
- 无法在我的对象中定义方法
- 组合我的对象并获得预期的结果