Pip*_*ipo 58 dom-events angularjs
我刚刚开始学习AngularJS并且与AngularJS的一些概念斗争.如果有人可以向我解释一些问题,那就太好了......
据我所知,这ng-click在技术上并不相同onclick(见这里),但两者都放在标记中.我认为这将是一个"不好的做法"?如果大多数人说这是"坏",为什么这是AngularJS的核心概念之一?我认为最好从JavaScript中选择DOM元素,而不是在标记中放置逻辑.
如果ng-click是对AngularJS中的点击事件做出反应的正确方法,我应该如何处理其他DOM事件?我看到有其他几个指令ng-mouseover,但并非所有DOM事件都有一个AngularJS等价物.我如何处理AngularJS中的'drop'事件(因此采用AngularJS方式 - 不是正常方式)?要明确:我想将文件拖到我的webapp中.
非常感谢Pipo
Mar*_*cok 54
如果大多数人说这是"坏",为什么这是AngularJS的核心概念之一?
那些真正喜欢Unobtrusive JavaScript的人可能会说它很糟糕.Angularians(以及那些具有弹性背景的人)在更具声明性的方法中看到了价值.
"Angular是围绕以下信念构建的:当构建UI并将软件组件连接在一起时,声明性代码优于命令式......通过声明性地描述UI应如何随应用程序状态的变化而变化,您可以从低级DOM操作中解脱出来任务. - 概述文档
另请参阅Bootstrap,Angular.js和Ember.js中使用的数据属性选项是否与Unobtrusive Javascript原则冲突?
我应该怎么做其他DOM事件?
编写自己的指令来监听它们(或找到其他人已经写过的指令).Angular使您能够扩展浏览器的功能 - 通过编写自己的指令.
更新:在下面的评论中,Tim Stewart提到了AngularUI的ui事件,它允许您将回调绑定到Angular本身不支持的任何事件.
从本质上讲,Angular需要标记中的元素才能正常运行.此外,这些元素在每次更改时都必须"编译",大多数情况下.所以,无论JavaScript如何,它已经有点"突兀"了.你不能简单地替换标记,并像你可以像jQuery一样自动绑定一切.
严格来说,不引人注目的JavaScript:1.分离结构和行为,以使您的代码更清晰,脚本维护更容易2.抢占浏览器不兼容性3.使用干净的语义HTML层(维基百科)
那肯定不是Angular.为了实现对所有内容的双向绑定,他们选择在DOM中创建自定义绑定点,而不是像jQuery那样使用类名或ID.(有点非标准的方法,但它显然有效.)
但想到它的真正方法是:基本上你的标记的每个受控部分都不再是直接的HTML了.它现在更像是一个模板,因此需要与准备渲染的引擎进行交互.因此,传统的不引人注意的规则并不真正适用......(FWIW,我是jQuery.on()函数的忠实粉丝/用户,在元素添加到页面时自动将元素绑定到事件.非常干净和灵活,恕我直言,我希望在Angular中有一个类似的机制.我喜欢在页面上的多个位置添加一个类,自动调用相同的事件处理程序.有一个地方去更改代码是一个好事.但是我离题了...)
对我来说,更大的问题是渐进式设计.网页是否在没有启用JavaScript的情况下工作?有人真的关心这个吗?嗯...
| 归档时间: |
|
| 查看次数: |
19694 次 |
| 最近记录: |