初识AngularJS时遇到的HTML5不识别ng-*的问题

来源:互联网 发布:游戏fps显示软件 编辑:程序博客网 时间:2024/05/20 22:02

如何将ASPX中ng-app ,ng-include等等标签下面的烦人的绿线去掉。


  • 简单介绍下AngularJS

    AngularJS是为了克服HTML在构建应用上的不足而设计的。HTML是一门很好的为静态文本展示设计的声明式语言,但要构建WEB应用的话它就显得乏力了。所以我做了一些工作(你也可以觉得是小花招)来让浏览器做我想要的事。
    通常,我们是通过以下技术来解决静态网页技术在构建动态应用上的不足:
    类库 - 类库是一些函数的集合,它能帮助你写WEB应用。起主导作用的是你的代码,由你来决定何时使用类库。类库有:jQuery等框架 - 框架是一种特殊的、已经实现了的WEB应用,你只需要对它填充具体的业务逻辑。这里框架是起主导作用的,由它来根据具体的应用逻辑来调用你的代码。框架有:knockout、sproutcore等。AngularJS使用了不同的方法,它尝试去补足HTML本身在构建应用方面的缺陷。AngularJS通过使用我们称为标识符(directives)的结构,让浏览器能够识别新的语法。例如:
    使用双大括号{{}}语法进行数据绑定;
    使用DOM控制结构来实现迭代或者隐藏DOM片段;
    支持表单和表单的验证;
    能将逻辑代码关联到相关的DOM元素上;
    能将HTML分组成可重用的组件。
    这里写图片描述

                 AngularJS下载地址                     http://angularjs.org

        源码的部分:

(function(window, document, undefined) {var    jqLite,           // delay binding since jQuery could be loaded after us.    jQuery,           // delay binding    /** @name angular */    angular           = window.angular || (window.angular = {}),    angularModule,    uid               = 0;function noop() {}noop.$inject = [];function identity($) {return $;}identity.$inject = [];var jq = function() {  if (isDefined(jq.name_)) return jq.name_;  var el;  var i, ii = ngAttrPrefixes.length, prefix, name;  for (i = 0; i < ii; ++i) {    prefix = ngAttrPrefixes[i];    if (el = document.querySelector('[' + prefix.replace(':', '\\:') + 'jq]')) {      name = el.getAttribute(prefix + 'jq');      break;    }  }  return (jq.name_ = name);};var ngAttrPrefixes = ['ng-', 'data-ng-', 'ng:', 'x-ng-'];function getNgAttribute(element, ngAttr) {  var attr, i, ii = ngAttrPrefixes.length;  for (i = 0; i < ii; ++i) {    attr = ngAttrPrefixes[i] + ngAttr;    if (isString(attr = element.getAttribute(attr))) {      return attr;    }  }  return null;}function angularInit(element, bootstrap) {  var appElement,      module,      config = {};  // The element `element` has priority over any other element  forEach(ngAttrPrefixes, function(prefix) {    var name = prefix + 'app';    if (!appElement && element.hasAttribute && element.hasAttribute(name)) {      appElement = element;      module = element.getAttribute(name);    }  });  forEach(ngAttrPrefixes, function(prefix) {    var name = prefix + 'app';    var candidate;    if (!appElement && (candidate = element.querySelector('[' + name.replace(':', '\\:') + ']'))) {      appElement = candidate;      module = candidate.getAttribute(name);    }  });  if (appElement) {    config.strictDi = getNgAttribute(appElement, "strict-di") !== null;    bootstrap(appElement, module ? [module] : [], config);  }}

其中不难发现,它的定义

var ngAttrPrefixes = [‘ng-‘, ‘data-ng-‘, ‘ng:’, ‘x-ng-‘];

故,我们可以将ng-改成data-ng- 或者 x-ng-*。
真是解决了一大困惑。
原来的代码:
这里写图片描述
现在的代码:
这里写图片描述

哈哈哈哈哈。好棒!加油!

0 0