在没有使用jQuery引导AngularJS时,选择器未被实现。
Selectors not implemented when bootstrapping AngularJS without jQuery这个问题的出现的原因是:如果在不加载jQuery的情况下引导AngularJS,则无法使用选择器。AngularJS会回退到所谓的jqLite,这是一组最小的jQuery API子集,用于AngularJS的正常运行。根据官方文档(http://docs.angularjs.org/api/angular.element),在jqLite中只实现了标签名选择器。
解决这个问题的方法是修改代码,使用标签名选择器来进行手动引导。代码如下:
angular.element(document).ready(function() { angular.bootstrap(angular.element(document).find('body'), ['stApp']); });
在这个例子中,我们只使用了标签名选择器,所以find
按预期工作,即使没有包含jQuery也可以正常工作。示例链接:http://plnkr.co/edit/xsE02zWxK993FTXtWUbp?p=preview
参考这个类似问题的回答:stackoverflow.com/questions/16537783/…,它似乎建议我必须进行手动引导。其中提到:“它们大致相同,只有一些差异:angular.bootstrap(document, ['TodoApp']);如果您在页面末尾加载脚本(而不是在头部),这将起作用。否则,在引导应用程序时DOM将尚未加载(没有任何模板可编译,指令也不会产生任何效果)。”