@angular-wave/angular.ts 0.9.4 → 0.9.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (645) hide show
  1. package/@types/index.d.ts +1 -84
  2. package/{src/index.ts → @types/namespace.d.ts} +4 -24
  3. package/@types/router/template-factory.d.ts +2 -2
  4. package/dist/angular-ts.esm.js +3 -3
  5. package/dist/angular-ts.umd.js +3 -3
  6. package/dist/angular-ts.umd.min.js +1 -1
  7. package/package.json +9 -2
  8. package/.github/workflows/ci.yml +0 -104
  9. package/.github/workflows/gh-pages.yml +0 -75
  10. package/.husky/pre-commit +0 -5
  11. package/.prettierignore +0 -9
  12. package/CHANGELOG.md +0 -17667
  13. package/CODE_OF_CONDUCT.md +0 -3
  14. package/CONTRIBUTING.md +0 -247
  15. package/DEVELOPERS.md +0 -499
  16. package/Makefile +0 -60
  17. package/RELEASE.md +0 -86
  18. package/TRIAGING.md +0 -127
  19. package/docs/.cspell.yml +0 -8
  20. package/docs/.github/dependabot.yml +0 -14
  21. package/docs/.nvmrc +0 -1
  22. package/docs/CONTRIBUTING.md +0 -28
  23. package/docs/Dockerfile +0 -4
  24. package/docs/LICENSE +0 -201
  25. package/docs/README.md +0 -217
  26. package/docs/assets/icons/logo.svg +0 -1
  27. package/docs/assets/scss/_variables_project.scss +0 -12
  28. package/docs/assets/scss/_variables_project_after_bs.scss +0 -8
  29. package/docs/assets/scss/index.scss +0 -48
  30. package/docs/config.yaml +0 -15
  31. package/docs/content/_index.md +0 -28
  32. package/docs/content/docs/_index.md +0 -61
  33. package/docs/content/docs/directive/_index.md +0 -4
  34. package/docs/content/docs/directive/app.md +0 -11
  35. package/docs/content/docs/directive/aria.md +0 -0
  36. package/docs/content/docs/directive/bind.md +0 -72
  37. package/docs/content/docs/directive/blur.md +0 -38
  38. package/docs/content/docs/directive/channel.md +0 -37
  39. package/docs/content/docs/directive/class-even.md +0 -47
  40. package/docs/content/docs/directive/class-odd.md +0 -48
  41. package/docs/content/docs/directive/class.md +0 -64
  42. package/docs/content/docs/directive/click.md +0 -41
  43. package/docs/content/docs/directive/cloak.md +0 -74
  44. package/docs/content/docs/directive/copy.md +0 -38
  45. package/docs/content/docs/directive/cut.md +0 -40
  46. package/docs/content/docs/directive/dblclick.md +0 -41
  47. package/docs/content/docs/directive/focus.md +0 -38
  48. package/docs/content/docs/directive/get.md +0 -203
  49. package/docs/content/docs/directive/include.md +0 -7
  50. package/docs/content/docs/directive/keydown.md +0 -38
  51. package/docs/content/docs/directive/keyup.md +0 -38
  52. package/docs/content/docs/directive/load.md +0 -43
  53. package/docs/content/docs/directive/mousedown.md +0 -38
  54. package/docs/content/docs/directive/mouseenter.md +0 -38
  55. package/docs/content/docs/directive/mouseleave.md +0 -38
  56. package/docs/content/docs/directive/mousemove.md +0 -38
  57. package/docs/content/docs/directive/mouseout.md +0 -38
  58. package/docs/content/docs/directive/mouseover.md +0 -38
  59. package/docs/content/docs/directive/mouseup.md +0 -38
  60. package/docs/content/docs/directive/non-bindable.md +0 -28
  61. package/docs/content/docs/filter/_index.md +0 -4
  62. package/docs/content/docs/filter/filter.md +0 -78
  63. package/docs/content/docs/filter/json.md +0 -19
  64. package/docs/content/docs/filter/limit-to.md +0 -30
  65. package/docs/content/docs/filter/order-by.md +0 -123
  66. package/docs/content/docs/provider/_index.md +0 -4
  67. package/docs/content/docs/provider/eventBusProvider.md +0 -35
  68. package/docs/content/docs/provider/locationProvider.md +0 -26
  69. package/docs/content/docs/provider/logProvider.md +0 -59
  70. package/docs/content/docs/provider/sceProvider.md +0 -194
  71. package/docs/content/docs/provider/templateCacheProvider.md +0 -100
  72. package/docs/content/docs/provider/templateRequestProvider.md +0 -5
  73. package/docs/content/docs/service/_index.md +0 -4
  74. package/docs/content/docs/service/compile.md +0 -5
  75. package/docs/content/docs/service/controller.md +0 -5
  76. package/docs/content/docs/service/eventBus.md +0 -56
  77. package/docs/content/docs/service/http.md +0 -161
  78. package/docs/content/docs/service/interpolation.md +0 -5
  79. package/docs/content/docs/service/location.md +0 -57
  80. package/docs/content/docs/service/log.md +0 -113
  81. package/docs/content/docs/service/parse.md +0 -5
  82. package/docs/content/docs/service/rootElement.md +0 -5
  83. package/docs/content/docs/service/rootScope.md +0 -5
  84. package/docs/content/docs/service/sce.md +0 -194
  85. package/docs/content/docs/service/templateCache.md +0 -64
  86. package/docs/content/docs/service/templateRequest.md +0 -5
  87. package/docs/content/docs/service/url.md +0 -5
  88. package/docs/content/docs/values/_index.md +0 -4
  89. package/docs/content/docs/values/document.md +0 -29
  90. package/docs/content/docs/values/window.md +0 -29
  91. package/docs/docker-compose.yaml +0 -12
  92. package/docs/docsy.work +0 -5
  93. package/docs/docsy.work.sum +0 -0
  94. package/docs/go.mod +0 -5
  95. package/docs/go.sum +0 -6
  96. package/docs/hugo-disabled.toml +0 -220
  97. package/docs/hugo.yaml +0 -200
  98. package/docs/layouts/404.html +0 -13
  99. package/docs/layouts/_markup/render-heading.html +0 -1
  100. package/docs/layouts/partials/hooks/head-end.html +0 -3
  101. package/docs/layouts/shortcodes/showcss.html +0 -2
  102. package/docs/layouts/shortcodes/showhtml.html +0 -2
  103. package/docs/layouts/shortcodes/showjs.html +0 -2
  104. package/docs/layouts/shortcodes/showraw.html +0 -1
  105. package/docs/layouts/shortcodes/version.html +0 -1
  106. package/docs/package-lock.json +0 -2293
  107. package/docs/package.json +0 -53
  108. package/docs/static/examples/counter/counter-test.html +0 -13
  109. package/docs/static/examples/counter/counter.html +0 -5
  110. package/docs/static/examples/counter/counter.test.js +0 -28
  111. package/docs/static/examples/document/document.html +0 -3
  112. package/docs/static/examples/eventbus/eventbus-test.html +0 -15
  113. package/docs/static/examples/eventbus/eventbus.html +0 -13
  114. package/docs/static/examples/eventbus/eventbus.js +0 -15
  115. package/docs/static/examples/eventbus/eventbus.test.js +0 -19
  116. package/docs/static/examples/i18n/i18n.html +0 -77
  117. package/docs/static/examples/ng-bind/ng-bind.html +0 -9
  118. package/docs/static/examples/ng-blur/ng-blur.html +0 -9
  119. package/docs/static/examples/ng-channel/ng-channel-test.html +0 -17
  120. package/docs/static/examples/ng-channel/ng-channel.html +0 -24
  121. package/docs/static/examples/ng-channel/ng-channel.test.js +0 -31
  122. package/docs/static/examples/ng-class/ng-class.html +0 -71
  123. package/docs/static/examples/ng-class-even/ng-class-even.html +0 -8
  124. package/docs/static/examples/ng-class-odd/ng-class-odd.html +0 -8
  125. package/docs/static/examples/ng-click/ng-click.html +0 -6
  126. package/docs/static/examples/ng-copy/ng-copy.html +0 -6
  127. package/docs/static/examples/ng-cut/ng-cut.html +0 -6
  128. package/docs/static/examples/ng-dblclick/ng-dblclick.html +0 -10
  129. package/docs/static/examples/ng-focus/ng-focus.html +0 -9
  130. package/docs/static/examples/ng-keydown/ng-keydown.html +0 -9
  131. package/docs/static/examples/ng-keyup/ng-keyup.html +0 -9
  132. package/docs/static/examples/ng-load/ng-load.html +0 -8
  133. package/docs/static/examples/ng-mousedown/ng-mousedown.html +0 -6
  134. package/docs/static/examples/ng-mouseenter/ng-mouseenter.html +0 -4
  135. package/docs/static/examples/ng-mouseleave/ng-mouseleave.html +0 -4
  136. package/docs/static/examples/ng-mousemove/ng-mousemove.html +0 -4
  137. package/docs/static/examples/ng-mouseout/ng-mouseout.html +0 -4
  138. package/docs/static/examples/ng-mouseover/ng-mouseover.html +0 -4
  139. package/docs/static/examples/ng-mouseup/ng-mouseup.html +0 -4
  140. package/docs/static/examples/ng-non-bindable/ng-non-bindable-test.html +0 -13
  141. package/docs/static/examples/ng-non-bindable/ng-non-bindable.html +0 -3
  142. package/docs/static/examples/ng-non-bindable/ng-non-bindable.test.js +0 -11
  143. package/docs/static/examples/window/window.html +0 -4
  144. package/docs/static/typedoc/.nojekyll +0 -1
  145. package/docs/static/typedoc/assets/hierarchy.js +0 -1
  146. package/docs/static/typedoc/assets/highlight.css +0 -29
  147. package/docs/static/typedoc/assets/icons.js +0 -18
  148. package/docs/static/typedoc/assets/icons.svg +0 -1
  149. package/docs/static/typedoc/assets/main.js +0 -60
  150. package/docs/static/typedoc/assets/navigation.js +0 -1
  151. package/docs/static/typedoc/assets/search.js +0 -1
  152. package/docs/static/typedoc/assets/style.css +0 -1633
  153. package/docs/static/typedoc/classes/Location.html +0 -55
  154. package/docs/static/typedoc/classes/LocationProvider.html +0 -20
  155. package/docs/static/typedoc/classes/LogProvider.html +0 -6
  156. package/docs/static/typedoc/classes/PubSub.html +0 -71
  157. package/docs/static/typedoc/classes/PubSubProvider.html +0 -4
  158. package/docs/static/typedoc/classes/TemplateCacheProvider.html +0 -5
  159. package/docs/static/typedoc/hierarchy.html +0 -1
  160. package/docs/static/typedoc/index.html +0 -1
  161. package/docs/static/typedoc/interfaces/DefaultPorts.html +0 -5
  162. package/docs/static/typedoc/interfaces/Html5Mode.html +0 -23
  163. package/docs/static/typedoc/interfaces/HttpHeadersGetter.html +0 -1
  164. package/docs/static/typedoc/interfaces/HttpProviderDefaults.html +0 -31
  165. package/docs/static/typedoc/interfaces/HttpRequestConfigHeaders.html +0 -6
  166. package/docs/static/typedoc/interfaces/HttpRequestTransformer.html +0 -1
  167. package/docs/static/typedoc/interfaces/HttpResponse.html +0 -7
  168. package/docs/static/typedoc/interfaces/HttpResponseTransformer.html +0 -1
  169. package/docs/static/typedoc/interfaces/HttpService.html +0 -38
  170. package/docs/static/typedoc/interfaces/LogService.html +0 -12
  171. package/docs/static/typedoc/interfaces/RequestConfig.html +0 -48
  172. package/docs/static/typedoc/interfaces/RequestShortcutConfig.html +0 -38
  173. package/docs/static/typedoc/interfaces/ServiceProvider.html +0 -5
  174. package/docs/static/typedoc/interfaces/UrlParts.html +0 -9
  175. package/docs/static/typedoc/types/HttpParamSerializer.html +0 -2
  176. package/docs/static/typedoc/types/HttpParams.html +0 -2
  177. package/docs/static/typedoc/types/HttpPromise.html +0 -1
  178. package/docs/static/typedoc/types/HttpResponseStatus.html +0 -1
  179. package/docs/static/typedoc/types/LogCall.html +0 -2
  180. package/docs/static/typedoc/types/LogServiceFactory.html +0 -2
  181. package/docs/static/typedoc/types/UrlChangeListener.html +0 -5
  182. package/docs/static/typedoc/variables/EventBus.html +0 -1
  183. package/docs/static/version.js +0 -13
  184. package/docs/test-results/.last-run.json +0 -4
  185. package/docs/test-results/static-examples-counter-counter-counter-example/error-context.md +0 -50
  186. package/eslint.config.js +0 -26
  187. package/images/android-chrome-192x192.png +0 -0
  188. package/images/android-chrome-512x512.png +0 -0
  189. package/images/apple-touch-icon.png +0 -0
  190. package/images/favicon-16x16.png +0 -0
  191. package/images/favicon-32x32.png +0 -0
  192. package/images/favicon.ico +0 -0
  193. package/images/site.webmanifest +0 -19
  194. package/index.html +0 -86
  195. package/legacy.d.ts +0 -1678
  196. package/playwright.config.ts +0 -81
  197. package/public/jasmine/boot0.js +0 -66
  198. package/public/jasmine/boot1.js +0 -134
  199. package/public/jasmine/jasmine-html.js +0 -970
  200. package/public/jasmine/jasmine.css +0 -323
  201. package/public/jasmine/jasmine.js +0 -11406
  202. package/public/public/README.md +0 -1
  203. package/public/public/circle.html +0 -1
  204. package/public/public/jasmine-helper.css +0 -9
  205. package/public/public/my_child_directive.html +0 -1
  206. package/public/public/my_directive.html +0 -1
  207. package/public/public/my_other_directive.html +0 -1
  208. package/public/public/test.html +0 -1
  209. package/rollup.config.js +0 -51
  210. package/src/angular.js +0 -286
  211. package/src/angular.spec.js +0 -1191
  212. package/src/animations/animate-cache.js +0 -80
  213. package/src/animations/animate-children-directive.js +0 -32
  214. package/src/animations/animate-children-directive.md +0 -80
  215. package/src/animations/animate-css-driver.js +0 -284
  216. package/src/animations/animate-css.html +0 -58
  217. package/src/animations/animate-css.js +0 -915
  218. package/src/animations/animate-css.md +0 -263
  219. package/src/animations/animate-js-driver.js +0 -60
  220. package/src/animations/animate-js.html +0 -47
  221. package/src/animations/animate-js.js +0 -371
  222. package/src/animations/animate-queue.js +0 -859
  223. package/src/animations/animate-runner.js +0 -193
  224. package/src/animations/animate-swap.js +0 -33
  225. package/src/animations/animate-swap.md +0 -88
  226. package/src/animations/animate.html +0 -19
  227. package/src/animations/animate.js +0 -546
  228. package/src/animations/animate.md +0 -933
  229. package/src/animations/animate.spec.js +0 -490
  230. package/src/animations/animation.js +0 -519
  231. package/src/animations/animations.test.js +0 -10
  232. package/src/animations/interface.ts +0 -19
  233. package/src/animations/raf-scheduler.html +0 -19
  234. package/src/animations/raf-scheduler.js +0 -92
  235. package/src/animations/raf-scheduler.spec.js +0 -98
  236. package/src/animations/shared.js +0 -341
  237. package/src/binding.html +0 -19
  238. package/src/binding.spec.js +0 -474
  239. package/src/binding.test.js +0 -10
  240. package/src/core/compile/attributes.js +0 -337
  241. package/src/core/compile/compile.html +0 -19
  242. package/src/core/compile/compile.js +0 -3271
  243. package/src/core/compile/compile.md +0 -1128
  244. package/src/core/compile/compile.spec.js +0 -15574
  245. package/src/core/compile/compile.test.js +0 -12
  246. package/src/core/controller/controller.html +0 -22
  247. package/src/core/controller/controller.js +0 -193
  248. package/src/core/controller/controller.spec.js +0 -334
  249. package/src/core/controller/controller.test.js +0 -12
  250. package/src/core/controller/interface.ts +0 -6
  251. package/src/core/core.html +0 -20
  252. package/src/core/core.test.js +0 -12
  253. package/src/core/di/injector.html +0 -19
  254. package/src/core/di/injector.js +0 -307
  255. package/src/core/di/injector.md +0 -740
  256. package/src/core/di/injector.spec.js +0 -2310
  257. package/src/core/di/injector.test.js +0 -12
  258. package/src/core/di/internal-injector.js +0 -286
  259. package/src/core/di/ng-module.html +0 -19
  260. package/src/core/di/ng-module.js +0 -229
  261. package/src/core/di/ng-module.spec.js +0 -263
  262. package/src/core/di/ng-module.test.js +0 -12
  263. package/src/core/filter/filter.html +0 -19
  264. package/src/core/filter/filter.js +0 -55
  265. package/src/core/filter/filter.md +0 -132
  266. package/src/core/filter/filter.spec.js +0 -149
  267. package/src/core/filter/filter.test.js +0 -12
  268. package/src/core/interpolate/interface.ts +0 -14
  269. package/src/core/interpolate/interpolate.html +0 -22
  270. package/src/core/interpolate/interpolate.js +0 -410
  271. package/src/core/interpolate/interpolate.spec.js +0 -601
  272. package/src/core/interpolate/interpolate.test.js +0 -12
  273. package/src/core/parse/ast/ast-node.ts +0 -81
  274. package/src/core/parse/ast/ast.html +0 -19
  275. package/src/core/parse/ast/ast.js +0 -574
  276. package/src/core/parse/ast/ast.spec.js +0 -1453
  277. package/src/core/parse/ast/ast.test.js +0 -10
  278. package/src/core/parse/ast-type.js +0 -23
  279. package/src/core/parse/interface.ts +0 -84
  280. package/src/core/parse/interpreter.js +0 -915
  281. package/src/core/parse/lexer/lexer.html +0 -19
  282. package/src/core/parse/lexer/lexer.js +0 -338
  283. package/src/core/parse/lexer/lexer.spec.js +0 -303
  284. package/src/core/parse/lexer/lexer.test.js +0 -10
  285. package/src/core/parse/lexer/token.ts +0 -22
  286. package/src/core/parse/parse.html +0 -19
  287. package/src/core/parse/parse.js +0 -337
  288. package/src/core/parse/parse.md +0 -57
  289. package/src/core/parse/parse.spec.js +0 -2107
  290. package/src/core/parse/parse.test.js +0 -10
  291. package/src/core/parse/parser/parser.html +0 -19
  292. package/src/core/parse/parser/parser.js +0 -64
  293. package/src/core/parse/parser/parser.spec.js +0 -8
  294. package/src/core/parse/parser/parser.test.js +0 -10
  295. package/src/core/prop.spec.js +0 -775
  296. package/src/core/root-element.spec.js +0 -14
  297. package/src/core/sanitize/interface.ts +0 -10
  298. package/src/core/sanitize/sanitize-uri.js +0 -75
  299. package/src/core/sanitize/sanitize-uri.spec.js +0 -249
  300. package/src/core/sanitize/sanitize-uri.test.js +0 -12
  301. package/src/core/sanitize/sanitize.html +0 -22
  302. package/src/core/scope/scope.html +0 -19
  303. package/src/core/scope/scope.js +0 -1252
  304. package/src/core/scope/scope.spec.js +0 -3000
  305. package/src/core/scope/scope.test.js +0 -12
  306. package/src/directive/aria/aria.html +0 -19
  307. package/src/directive/aria/aria.js +0 -382
  308. package/src/directive/aria/aria.md +0 -145
  309. package/src/directive/aria/aria.spec.js +0 -1241
  310. package/src/directive/aria/aria.test.js +0 -12
  311. package/src/directive/attrs/attrs.html +0 -19
  312. package/src/directive/attrs/attrs.js +0 -106
  313. package/src/directive/attrs/attrs.md +0 -224
  314. package/src/directive/attrs/attrs.spec.js +0 -71
  315. package/src/directive/attrs/attrs.test.js +0 -12
  316. package/src/directive/attrs/boolean.html +0 -19
  317. package/src/directive/attrs/boolean.spec.js +0 -137
  318. package/src/directive/attrs/boolean.test.js +0 -12
  319. package/src/directive/attrs/element-style.html +0 -22
  320. package/src/directive/attrs/element-style.spec.js +0 -85
  321. package/src/directive/attrs/element-style.test.js +0 -12
  322. package/src/directive/attrs/src.html +0 -19
  323. package/src/directive/attrs/src.spec.js +0 -163
  324. package/src/directive/attrs/src.test.js +0 -12
  325. package/src/directive/bind/bind-html.spec.js +0 -36
  326. package/src/directive/bind/bind.html +0 -20
  327. package/src/directive/bind/bind.js +0 -78
  328. package/src/directive/bind/bind.md +0 -142
  329. package/src/directive/bind/bind.spec.js +0 -314
  330. package/src/directive/bind/bind.test.js +0 -12
  331. package/src/directive/channel/channel.html +0 -19
  332. package/src/directive/channel/channel.js +0 -30
  333. package/src/directive/channel/channel.spec.js +0 -67
  334. package/src/directive/channel/channel.test.js +0 -10
  335. package/src/directive/class/class-test.html +0 -23
  336. package/src/directive/class/class.html +0 -19
  337. package/src/directive/class/class.js +0 -184
  338. package/src/directive/class/class.spec.js +0 -704
  339. package/src/directive/class/class.test.js +0 -12
  340. package/src/directive/cloak/cloak.html +0 -19
  341. package/src/directive/cloak/cloak.js +0 -11
  342. package/src/directive/cloak/cloak.spec.js +0 -44
  343. package/src/directive/cloak/cloak.test.js +0 -12
  344. package/src/directive/controller/controller.html +0 -22
  345. package/src/directive/controller/controller.js +0 -11
  346. package/src/directive/controller/controller.md +0 -46
  347. package/src/directive/controller/controller.spec.js +0 -175
  348. package/src/directive/controller/controller.test.js +0 -12
  349. package/src/directive/events/click.spec.js +0 -35
  350. package/src/directive/events/event.spec.js +0 -267
  351. package/src/directive/events/events-test.html +0 -36
  352. package/src/directive/events/events.html +0 -20
  353. package/src/directive/events/events.js +0 -65
  354. package/src/directive/events/events.md +0 -125
  355. package/src/directive/events/events.test.js +0 -12
  356. package/src/directive/form/form.html +0 -19
  357. package/src/directive/form/form.js +0 -669
  358. package/src/directive/form/form.spec.js +0 -1515
  359. package/src/directive/form/form.test.js +0 -12
  360. package/src/directive/http/delete.spec.js +0 -23
  361. package/src/directive/http/form-router-test.html +0 -44
  362. package/src/directive/http/form-test.html +0 -18
  363. package/src/directive/http/get.spec.js +0 -488
  364. package/src/directive/http/http.html +0 -22
  365. package/src/directive/http/http.js +0 -342
  366. package/src/directive/http/http.test.js +0 -12
  367. package/src/directive/http/interface.ts +0 -36
  368. package/src/directive/http/post-example.html +0 -30
  369. package/src/directive/http/post.spec.js +0 -521
  370. package/src/directive/http/put.spec.js +0 -23
  371. package/src/directive/if/if-animate-css.html +0 -57
  372. package/src/directive/if/if-animate-svg.html +0 -25
  373. package/src/directive/if/if.html +0 -19
  374. package/src/directive/if/if.js +0 -72
  375. package/src/directive/if/if.md +0 -76
  376. package/src/directive/if/if.spec.js +0 -293
  377. package/src/directive/if/if.test.js +0 -114
  378. package/src/directive/include/include.html +0 -19
  379. package/src/directive/include/include.js +0 -151
  380. package/src/directive/include/include.md +0 -87
  381. package/src/directive/include/include.spec.js +0 -734
  382. package/src/directive/include/include.test.js +0 -12
  383. package/src/directive/init/init.html +0 -19
  384. package/src/directive/init/init.js +0 -22
  385. package/src/directive/init/init.md +0 -41
  386. package/src/directive/init/init.spec.js +0 -68
  387. package/src/directive/init/init.test.js +0 -12
  388. package/src/directive/inject/inject.html +0 -19
  389. package/src/directive/inject/inject.js +0 -35
  390. package/src/directive/inject/inject.spec.js +0 -108
  391. package/src/directive/inject/inject.test.js +0 -12
  392. package/src/directive/input/input-example.html +0 -15
  393. package/src/directive/input/input.html +0 -19
  394. package/src/directive/input/input.js +0 -1078
  395. package/src/directive/input/input.md +0 -706
  396. package/src/directive/input/input.spec.js +0 -3700
  397. package/src/directive/input/input.test.js +0 -12
  398. package/src/directive/messages/messages.html +0 -22
  399. package/src/directive/messages/messages.js +0 -349
  400. package/src/directive/messages/messages.md +0 -543
  401. package/src/directive/messages/messages.spec.js +0 -1083
  402. package/src/directive/messages/messages.test.js +0 -12
  403. package/src/directive/model/change.md +0 -25
  404. package/src/directive/model/model.html +0 -19
  405. package/src/directive/model/model.js +0 -1170
  406. package/src/directive/model/model.spec.js +0 -1976
  407. package/src/directive/model/model.test.js +0 -12
  408. package/src/directive/model-options/model-option.test.js +0 -12
  409. package/src/directive/model-options/model-options.html +0 -22
  410. package/src/directive/model-options/model-options.js +0 -142
  411. package/src/directive/model-options/model-options.md +0 -407
  412. package/src/directive/model-options/model-options.spec.js +0 -1022
  413. package/src/directive/non-bindable/non-bindable.html +0 -22
  414. package/src/directive/non-bindable/non-bindable.js +0 -9
  415. package/src/directive/non-bindable/non-bindable.spec.js +0 -59
  416. package/src/directive/non-bindable/non-bindable.test.js +0 -12
  417. package/src/directive/observe/observe-demo.html +0 -184
  418. package/src/directive/observe/observe.html +0 -19
  419. package/src/directive/observe/observe.js +0 -41
  420. package/src/directive/observe/observe.spec.js +0 -106
  421. package/src/directive/observe/observe.test.js +0 -10
  422. package/src/directive/on/on.html +0 -19
  423. package/src/directive/on/on.spec.js +0 -215
  424. package/src/directive/on/on.test.js +0 -12
  425. package/src/directive/options/options-example.html +0 -17
  426. package/src/directive/options/options.html +0 -22
  427. package/src/directive/options/options.js +0 -542
  428. package/src/directive/options/options.md +0 -179
  429. package/src/directive/options/options.spec.js +0 -3554
  430. package/src/directive/options/options.test.js +0 -12
  431. package/src/directive/ref/href.html +0 -19
  432. package/src/directive/ref/href.spec.js +0 -141
  433. package/src/directive/ref/href.test.js +0 -19
  434. package/src/directive/ref/ref.html +0 -19
  435. package/src/directive/ref/ref.js +0 -89
  436. package/src/directive/ref/ref.spec.js +0 -546
  437. package/src/directive/repeat/repeat.html +0 -19
  438. package/src/directive/repeat/repeat.js +0 -333
  439. package/src/directive/repeat/repeat.md +0 -330
  440. package/src/directive/repeat/repeat.spec.js +0 -1209
  441. package/src/directive/repeat/repeat.test.js +0 -12
  442. package/src/directive/script/script.html +0 -19
  443. package/src/directive/script/script.js +0 -17
  444. package/src/directive/script/script.md +0 -11
  445. package/src/directive/script/script.spec.js +0 -47
  446. package/src/directive/script/script.test.js +0 -12
  447. package/src/directive/select/select.html +0 -19
  448. package/src/directive/select/select.js +0 -594
  449. package/src/directive/select/select.md +0 -74
  450. package/src/directive/select/select.spec.js +0 -2566
  451. package/src/directive/select/select.test.js +0 -12
  452. package/src/directive/setter/setter.html +0 -19
  453. package/src/directive/setter/setter.js +0 -59
  454. package/src/directive/setter/setter.spec.js +0 -100
  455. package/src/directive/setter/setter.test.js +0 -12
  456. package/src/directive/show-hide/show-hide.html +0 -22
  457. package/src/directive/show-hide/show-hide.js +0 -65
  458. package/src/directive/show-hide/show-hide.md +0 -255
  459. package/src/directive/show-hide/show-hide.spec.js +0 -268
  460. package/src/directive/show-hide/show-hide.test.js +0 -12
  461. package/src/directive/style/style.html +0 -19
  462. package/src/directive/style/style.js +0 -27
  463. package/src/directive/style/style.md +0 -23
  464. package/src/directive/style/style.spec.js +0 -183
  465. package/src/directive/style/style.test.js +0 -12
  466. package/src/directive/switch/switch.html +0 -19
  467. package/src/directive/switch/switch.js +0 -133
  468. package/src/directive/switch/switch.md +0 -66
  469. package/src/directive/switch/switch.spec.js +0 -509
  470. package/src/directive/switch/switch.test.js +0 -12
  471. package/src/directive/transclude/transclude.js +0 -122
  472. package/src/directive/validators/validators.html +0 -22
  473. package/src/directive/validators/validators.js +0 -346
  474. package/src/directive/validators/validators.spec.js +0 -740
  475. package/src/directive/validators/validators.test.js +0 -12
  476. package/src/filters/filter.js +0 -213
  477. package/src/filters/filter.spec.js +0 -719
  478. package/src/filters/filters.html +0 -22
  479. package/src/filters/filters.js +0 -239
  480. package/src/filters/filters.spec.js +0 -36
  481. package/src/filters/filters.test.js +0 -12
  482. package/src/filters/interface.ts +0 -9
  483. package/src/filters/limit-to.js +0 -55
  484. package/src/filters/limit-to.spec.js +0 -252
  485. package/src/filters/order-by.js +0 -181
  486. package/src/filters/order-by.spec.js +0 -883
  487. package/src/index.js +0 -6
  488. package/src/index.spec.js +0 -11
  489. package/src/injection-tokens.js +0 -81
  490. package/src/interface.ts +0 -430
  491. package/src/ng.js +0 -291
  492. package/src/ng.spec.js +0 -45
  493. package/src/router/common/trace.js +0 -240
  494. package/src/router/directives/component-example.html +0 -37
  495. package/src/router/directives/state-directives.html +0 -22
  496. package/src/router/directives/state-directives.js +0 -393
  497. package/src/router/directives/state-directives.md +0 -435
  498. package/src/router/directives/state-directives.spec.js +0 -1091
  499. package/src/router/directives/state-directives.test.js +0 -10
  500. package/src/router/directives/view-directive.js +0 -489
  501. package/src/router/directives/view-directive.spec.js +0 -1921
  502. package/src/router/directives/view-directive.test.js +0 -10
  503. package/src/router/directives/view-directives.html +0 -22
  504. package/src/router/glob/glob.html +0 -19
  505. package/src/router/glob/glob.js +0 -102
  506. package/src/router/glob/glob.spec.js +0 -108
  507. package/src/router/glob/glob.test.js +0 -12
  508. package/src/router/hooks/core-resolvables.js +0 -38
  509. package/src/router/hooks/ignored-transition.js +0 -25
  510. package/src/router/hooks/invalid-transition.js +0 -14
  511. package/src/router/hooks/lazy-load.js +0 -104
  512. package/src/router/hooks/on-enter-exit-retain.js +0 -55
  513. package/src/router/hooks/redirect-to.js +0 -38
  514. package/src/router/hooks/resolve.js +0 -57
  515. package/src/router/hooks/update-globals.js +0 -34
  516. package/src/router/hooks/url.js +0 -34
  517. package/src/router/hooks/views.js +0 -41
  518. package/src/router/params/interface.ts +0 -626
  519. package/src/router/params/param-factory.js +0 -23
  520. package/src/router/params/param-type.js +0 -133
  521. package/src/router/params/param-types.js +0 -153
  522. package/src/router/params/param.js +0 -243
  523. package/src/router/params/state-params.js +0 -36
  524. package/src/router/path/path-node.js +0 -78
  525. package/src/router/path/path-utils.js +0 -207
  526. package/src/router/resolve/interface.ts +0 -208
  527. package/src/router/resolve/resolvable.js +0 -123
  528. package/src/router/resolve/resolve-context.js +0 -190
  529. package/src/router/router-test-hashbang.html +0 -45
  530. package/src/router/router-test.html +0 -41
  531. package/src/router/router.html +0 -22
  532. package/src/router/router.js +0 -54
  533. package/src/router/router.test.js +0 -12
  534. package/src/router/services.spec.js +0 -52
  535. package/src/router/state/interface.ts +0 -1007
  536. package/src/router/state/state-builder.js +0 -376
  537. package/src/router/state/state-builder.spec.js +0 -86
  538. package/src/router/state/state-matcher.js +0 -64
  539. package/src/router/state/state-object.js +0 -118
  540. package/src/router/state/state-queue-manager.js +0 -95
  541. package/src/router/state/state-registry.js +0 -262
  542. package/src/router/state/state-service.js +0 -687
  543. package/src/router/state/state.html +0 -23
  544. package/src/router/state/state.spec.js +0 -1002
  545. package/src/router/state/state.test.js +0 -12
  546. package/src/router/state/target-state.js +0 -162
  547. package/src/router/state/views.js +0 -195
  548. package/src/router/state-filter.spec.js +0 -139
  549. package/src/router/state-filters.js +0 -46
  550. package/src/router/template-factory.html +0 -19
  551. package/src/router/template-factory.js +0 -249
  552. package/src/router/template-factory.spec.js +0 -146
  553. package/src/router/template-factory.test.js +0 -12
  554. package/src/router/transition/hook-builder.js +0 -137
  555. package/src/router/transition/hook-registry.js +0 -181
  556. package/src/router/transition/interface.js +0 -18
  557. package/src/router/transition/interface.ts +0 -922
  558. package/src/router/transition/reject-factory.js +0 -122
  559. package/src/router/transition/transition-event-type.js +0 -26
  560. package/src/router/transition/transition-hook.js +0 -199
  561. package/src/router/transition/transition-service.js +0 -297
  562. package/src/router/transition/transition.js +0 -653
  563. package/src/router/url/url-config.js +0 -155
  564. package/src/router/url/url-matcher.js +0 -532
  565. package/src/router/url/url-rule.js +0 -231
  566. package/src/router/url/url-rules.js +0 -350
  567. package/src/router/url/url-service.js +0 -446
  568. package/src/router/url/url-service.spec.js +0 -1288
  569. package/src/router/url/url.html +0 -19
  570. package/src/router/url/url.test.js +0 -12
  571. package/src/router/view/interface.ts +0 -51
  572. package/src/router/view/view.html +0 -19
  573. package/src/router/view/view.js +0 -262
  574. package/src/router/view/view.spec.js +0 -100
  575. package/src/router/view/view.test.js +0 -12
  576. package/src/router/view-hook.spec.js +0 -215
  577. package/src/router/view-scroll.js +0 -33
  578. package/src/router/view-scroll.spec.js +0 -72
  579. package/src/services/anchor-scroll/anchor-scroll.html +0 -76
  580. package/src/services/anchor-scroll/anchor-scroll.js +0 -147
  581. package/src/services/exception/exception-handler.js +0 -75
  582. package/src/services/exception/interface.ts +0 -7
  583. package/src/services/http/http.html +0 -23
  584. package/src/services/http/http.js +0 -1109
  585. package/src/services/http/http.spec.js +0 -4320
  586. package/src/services/http/http.test.js +0 -11
  587. package/src/services/http/interface.ts +0 -256
  588. package/src/services/http/template-request.spec.js +0 -220
  589. package/src/services/location/interface.ts +0 -70
  590. package/src/services/location/location.html +0 -22
  591. package/src/services/location/location.js +0 -1006
  592. package/src/services/location/location.spec.js +0 -3792
  593. package/src/services/location/location.test.js +0 -12
  594. package/src/services/log/interface.ts +0 -39
  595. package/src/services/log/log.html +0 -19
  596. package/src/services/log/log.js +0 -74
  597. package/src/services/log/log.spec.js +0 -64
  598. package/src/services/log/log.test.js +0 -12
  599. package/src/services/pubsub/pubsub.html +0 -19
  600. package/src/services/pubsub/pubsub.js +0 -349
  601. package/src/services/pubsub/pubsub.spec.js +0 -400
  602. package/src/services/pubsub/pubsub.test.js +0 -12
  603. package/src/services/sce/sce.html +0 -19
  604. package/src/services/sce/sce.js +0 -852
  605. package/src/services/sce/sce.spec.js +0 -617
  606. package/src/services/sce/sce.test.js +0 -12
  607. package/src/services/template-cache/template-cache.html +0 -22
  608. package/src/services/template-cache/template-cache.js +0 -15
  609. package/src/services/template-cache/template-cache.spec.js +0 -134
  610. package/src/services/template-cache/template-cache.test.js +0 -12
  611. package/src/services/template-request/interface.ts +0 -23
  612. package/src/services/template-request/template-request.js +0 -142
  613. package/src/shared/cache.js +0 -7
  614. package/src/shared/common.js +0 -365
  615. package/src/shared/common.spec.js +0 -294
  616. package/src/shared/constants.js +0 -21
  617. package/src/shared/dom.js +0 -716
  618. package/src/shared/hof.js +0 -157
  619. package/src/shared/hof.spec.js +0 -60
  620. package/src/shared/interface.ts +0 -21
  621. package/src/shared/min-err.spec.js +0 -178
  622. package/src/shared/noderef.js +0 -225
  623. package/src/shared/predicates.js +0 -34
  624. package/src/shared/queue.js +0 -105
  625. package/src/shared/queue.spec.js +0 -80
  626. package/src/shared/shared.html +0 -24
  627. package/src/shared/shared.test.js +0 -12
  628. package/src/shared/strings.js +0 -142
  629. package/src/shared/strings.spec.js +0 -40
  630. package/src/shared/test-utils.js +0 -47
  631. package/src/shared/url-utils/interface.ts +0 -54
  632. package/src/shared/url-utils/url-utils.html +0 -22
  633. package/src/shared/url-utils/url-utils.js +0 -122
  634. package/src/shared/url-utils/url-utils.spec.js +0 -148
  635. package/src/shared/url-utils/url-utils.test.js +0 -12
  636. package/src/shared/utils.js +0 -1255
  637. package/src/shared/utils.spec.js +0 -178
  638. package/src/src.html +0 -21
  639. package/src/src.test.js +0 -10
  640. package/tsconfig.json +0 -19
  641. package/tsconfig.types.json +0 -14
  642. package/typedoc.json +0 -8
  643. package/utils/express.js +0 -203
  644. package/utils/version.cjs +0 -23
  645. package/vite.config.js +0 -14
@@ -1,1128 +0,0 @@
1
- /\* ! VARIABLE/FUNCTION NAMING CONVENTIONS THAT APPLY TO THIS FILE!
2
-
3
- -
4
- - DOM-related variables:
5
- -
6
- - - "node" - DOM Node
7
- - - "element" - DOM Element or Node
8
- - - "$node" or "$element" - JQLite-wrapped node or element
9
- -
10
- -
11
- - Compiler related stuff:
12
- -
13
- - - "linkFn" - linking fn of a single directive
14
- - - "nodeLinkFn" - function that aggregates all linking fns for a particular node
15
- - - "childLinkFn" - function that aggregates all linking fns for child nodes of a particular node
16
- - - "compositeLinkFn" - function that aggregates all linking fns for a compilation root (nodeList)
17
- \*/
18
-
19
- /\*\*
20
-
21
- - @ngdoc service
22
- - @name $compile
23
- - @kind function
24
- -
25
- - @description
26
- - Compiles an HTML string or DOM into a template and produces a template function, which
27
- - can then be used to link {@link ng.$rootScope.Scope `scope`} and the template together.
28
- -
29
- - The compilation is a process of walking the DOM tree and matching DOM elements to
30
- - {@link ng.$compileProvider#directive directives}.
31
- -
32
- - <div class="alert alert-warning">
33
- - **Note:** This document is an in-depth reference of all directive options.
34
- - For a gentle introduction to directives with examples of common use cases,
35
- - see the {@link guide/directive directive guide}.
36
- - </div>
37
- -
38
- - ## Comprehensive Directive API
39
- -
40
- - There are many different options for a directive.
41
- -
42
- - The difference resides in the return value of the factory function.
43
- - You can either return a {@link $compile#directive-definition-object Directive Definition Object (see below)}
44
- - that defines the directive properties, or just the `postLink` function (all other properties will have
45
- - the default values).
46
- -
47
- - <div class="alert alert-success">
48
- - **Best Practice:** It's recommended to use the "directive definition object" form.
49
- - </div>
50
- -
51
- - Here's an example directive declared with a Directive Definition Object:
52
- -
53
- - ```js
54
-
55
- ```
56
-
57
- - let myModule = angular.module(...);
58
- -
59
- - myModule.directive('directiveName', function factory(injectables) {
60
- - let directiveDefinitionObject = {
61
- - {@link $compile#-priority- priority}: 0,
62
- - {@link $compile#-template- template}: '<div></div>', // or // function(tElement, tAttrs) { ... },
63
- - // or
64
- - // {@link $compile#-templateurl- templateUrl}: 'directive.html', // or // function(tElement, tAttrs) { ... },
65
- - {@link $compile#-transclude- transclude}: false,
66
- - {@link $compile#-restrict- restrict}: 'A',
67
- - {@link $compile#-templatenamespace- templateNamespace}: 'html',
68
- - {@link $compile#-scope- scope}: false,
69
- - {@link $compile#-controller- controller}: function($scope, $element, $attrs, $transclude, otherInjectables) { ... },
70
- - {@link $compile#-controlleras- controllerAs}: 'stringIdentifier',
71
- - {@link $compile#-bindtocontroller- bindToController}: false,
72
- - {@link $compile#-require- require}: 'siblingDirectiveName', // or // ['^parentDirectiveName', '?optionalDirectiveName', '?^optionalParent'],
73
- - {@link $compile#-compile- compile}: function compile(tElement, tAttrs, transclude) {
74
- - return {
75
- - {@link $compile#pre-linking-function pre}: function preLink(scope, iElement, iAttrs, controller) { ... },
76
- - {@link $compile#post-linking-function post}: function postLink(scope, iElement, iAttrs, controller) { ... }
77
- - }
78
- - // or
79
- - // return function postLink( ... ) { ... }
80
- - },
81
- - // or
82
- - // {@link $compile#-link- link}: {
83
- - // {@link $compile#pre-linking-function pre}: function preLink(scope, iElement, iAttrs, controller) { ... },
84
- - // {@link $compile#post-linking-function post}: function postLink(scope, iElement, iAttrs, controller) { ... }
85
- - // }
86
- - // or
87
- - // {@link $compile#-link- link}: function postLink( ... ) { ... }
88
- - };
89
- - return directiveDefinitionObject;
90
- - });
91
- - ```
92
-
93
- ```
94
-
95
- -
96
- - <div class="alert alert-warning">
97
- - **Note:** Any unspecified options will use the default value. You can see the default values below.
98
- - </div>
99
- -
100
- - Therefore the above can be simplified as:
101
- -
102
- - ```js
103
-
104
- ```
105
-
106
- - let myModule = angular.module(...);
107
- -
108
- - myModule.directive('directiveName', function factory(injectables) {
109
- - let directiveDefinitionObject = {
110
- - link: function postLink(scope, iElement, iAttrs) { ... }
111
- - };
112
- - return directiveDefinitionObject;
113
- - // or
114
- - // return function postLink(scope, iElement, iAttrs) { ... }
115
- - });
116
- - ```
117
-
118
- ```
119
-
120
- -
121
- - ### Life-cycle hooks
122
- - Directive controllers can provide the following methods that are called by AngularTS at points in the life-cycle of the
123
- - directive.The following hooks can be defined on the controller prototype or added to the controller inside its constructor:
124
- - - `$onInit()` - Called on each controller after all the controllers on an element have been constructed and
125
- - had their bindings initialized (and before the pre &amp; post linking functions for the directives on
126
- - this element). This is a good place to put initialization code for your controller.
127
- - - `$onChanges(changesObj)` - Called whenever one-way (`<`) or interpolation (`@`) bindings are updated. The
128
- - `changesObj` is a hash whose keys are the names of the bound properties that have changed, and the values are an
129
- - object of the form `{ currentValue, previousValue, isFirstChange() }`. Use this hook to trigger updates within a
130
- - component such as cloning the bound value to prevent accidental mutation of the outer value. Note that this will
131
- - also be called when your bindings are initialized.
132
- - - `$onDestroy()` - Called on a controller when its containing scope is destroyed. Use this hook for releasing
133
- - external resources, watches and event handlers. Note that components have their `$onDestroy()` hooks called in
134
- - the same order as the `$scope.$broadcast` events are triggered, which is top down. This means that parent
135
- - components will have their `$onDestroy()` hook called before child components.
136
- - - `$postLink()` - Called after this controller's element and its children have been linked. Similar to the post-link
137
- - function this hook can be used to set up DOM event handlers and do direct DOM manipulation.
138
- - Note that child elements that contain `templateUrl` directives will not have been compiled and linked since
139
- - they are waiting for their template to load asynchronously and their own compilation and linking has been
140
- - suspended until that occurs.
141
- -
142
- -
143
- - ### Directive Definition Object
144
- -
145
- - The directive definition object provides instructions to the {@link ng.$compile
146
- - compiler}. The attributes are:
147
- -
148
- - #### `priority`
149
- - When there are multiple directives defined on a single DOM element, sometimes it
150
- - is necessary to specify the order in which the directives are applied. The `priority` is used
151
- - to sort the directives before their `compile` functions get called. Priority is defined as a
152
- - number. Directives with greater numerical `priority` are compiled first. Pre-link functions
153
- - are also run in priority order, but post-link functions are run in reverse order. The order
154
- - of directives with the same priority is undefined. The default priority is `0`.
155
- -
156
- - #### `terminal`
157
- - If set to true then the current `priority` will be the last set of directives
158
- - which will execute (any directives at the current priority will still execute
159
- - as the order of execution on same `priority` is undefined). Note that expressions
160
- - and other directives used in the directive's template will also be excluded from execution.
161
- -
162
- - #### `scope`
163
- - The scope property can be `false`, `true`, or an object:
164
- -
165
- - - **`false` (default):** No scope will be created for the directive. The directive will use its
166
- - parent's scope.
167
- -
168
- - - **`true`:** A new child scope that prototypically inherits from its parent will be created for
169
- - the directive's element. If multiple directives on the same element request a new scope,
170
- - only one new scope is created.
171
- -
172
- - - **`{...}` (an object hash):** A new "isolate" scope is created for the directive's template.
173
- - The 'isolate' scope differs from normal scope in that it does not prototypically
174
- - inherit from its parent scope. This is useful when creating reusable components, which should not
175
- - accidentally read or modify data in the parent scope. Note that an isolate scope
176
- - directive without a `template` or `templateUrl` will not apply the isolate scope
177
- - to its children elements.
178
- -
179
- - The 'isolate' scope object hash defines a set of local scope properties derived from attributes on the
180
- - directive's element. These local properties are useful for aliasing values for templates. The keys in
181
- - the object hash map to the name of the property on the isolate scope; the values define how the property
182
- - is bound to the parent scope, via matching attributes on the directive's element:
183
- -
184
- - - `@` or `@attr` - bind a local scope property to the value of DOM attribute. The result is
185
- - always a string since DOM attributes are strings. If no `attr` name is specified then the
186
- - attribute name is assumed to be the same as the local name. Given `<my-component
187
- - my-attr="hello {{name}}">`and the isolate scope definition`scope: { localName:'@myAttr' }`,
188
- - the directive's scope property `localName` will reflect the interpolated value of `hello
189
- - {{name}}`. As the `name`attribute changes so will the`localName` property on the directive's
190
- - scope. The `name` is read from the parent scope (not the directive's scope).
191
- -
192
- - - `=` or `=attr` - set up a bidirectional binding between a local scope property and an expression
193
- - passed via the attribute `attr`. The expression is evaluated in the context of the parent scope.
194
- - If no `attr` name is specified then the attribute name is assumed to be the same as the local
195
- - name. Given `<my-component my-attr="parentModel">` and the isolate scope definition `scope: {
196
- - localModel: '=myAttr' }`, the property `localModel` on the directive's scope will reflect the
197
- - value of `parentModel` on the parent scope. Changes to `parentModel` will be reflected in
198
- - `localModel` and vice versa. If the binding expression is non-assignable, or if the attribute
199
- - isn't optional and doesn't exist, an exception
200
- - ({@link error/$compile/nonassign `$compile:nonassign`}) will be thrown upon discovering changes
201
- - to the local value, since it will be impossible to sync them back to the parent scope.
202
- -
203
- - By default, the {@link ng.$rootScope.Scope#$watch `$watch`}
204
- - method is used for tracking changes, and the equality check is based on object identity.
205
- - However, if an object literal or an array literal is passed as the binding expression, the
206
- - equality check is done by value (using the {@link angular.equals} function). It's also possible
207
- - to watch the evaluated value shallowly with {@link ng.$rootScope.Scope#$watchCollection
208
- - `$watchCollection`}: use `=*` or `=*attr`
209
- - - - `<` or `<attr` - set up a one-way (one-directional) binding between a local scope property and an
210
- - expression passed via the attribute `attr`. The expression is evaluated in the context of the
211
- - parent scope. If no `attr` name is specified then the attribute name is assumed to be the same as the
212
- - local name.
213
- -
214
- - For example, given `<my-component my-attr="parentModel">` and directive definition of
215
- - `scope: { localModel:'<myAttr' }`, then the isolated scope property `localModel` will reflect the
216
- - value of `parentModel` on the parent scope. Any changes to `parentModel` will be reflected
217
- - in `localModel`, but changes in `localModel` will not reflect in `parentModel`. There are however
218
- - two caveats:
219
- - 1. one-way binding does not copy the value from the parent to the isolate scope, it simply
220
- - sets the same value. That means if your bound value is an object, changes to its properties
221
- - in the isolated scope will be reflected in the parent scope (because both reference the same object).
222
- - 2. one-way binding watches changes to the **identity** of the parent value. That means the
223
- - {@link ng.$rootScope.Scope#$watch `$watch`} on the parent value only fires if the reference
224
- - to the value has changed. In most cases, this should not be of concern, but can be important
225
- - to know if you one-way bind to an object, and then replace that object in the isolated scope.
226
- - If you now change a property of the object in your parent scope, the change will not be
227
- - propagated to the isolated scope, because the identity of the object on the parent scope
228
- - has not changed. Instead you must assign a new object.
229
- -
230
- - One-way binding is useful if you do not plan to propagate changes to your isolated scope bindings
231
- - back to the parent. However, it does not make this completely impossible.
232
- -
233
- - By default, the {@link ng.$rootScope.Scope#$watch `$watch`}
234
- - method is used for tracking changes, and the equality check is based on object identity.
235
- - It's also possible to watch the evaluated value shallowly with
236
- - {@link ng.$rootScope.Scope#$watchCollection `$watchCollection`}: use `<*` or `<*attr`
237
- -
238
- - - `&` or `&attr` - provides a way to execute an expression in the context of the parent scope. If
239
- - no `attr` name is specified then the attribute name is assumed to be the same as the local name.
240
- - Given `<my-component my-attr="count = count + value">` and the isolate scope definition `scope: {
241
- - localFn:'&myAttr' }`, the isolate scope property `localFn` will point to a function wrapper for
242
- - the `count = count + value` expression. Often it's desirable to pass data from the isolated scope
243
- - via an expression to the parent scope. This can be done by passing a map of local variable names
244
- - and values into the expression wrapper fn. For example, if the expression is `increment(amount)`
245
- - then we can specify the amount value by calling the `localFn` as `localFn({amount: 22})`.
246
- -
247
- - All 4 kinds of bindings (`@`, `=`, `<`, and `&`) can be made optional by adding `?` to the expression.
248
- - The marker must come after the mode and before the attribute name.
249
- - See the {@link error/$compile/iscp Invalid Isolate Scope Definition error} for definition examples.
250
- - This is useful to refine the interface directives provide.
251
- - One subtle difference between optional and non-optional happens \*\*when the binding attribute is not
252
- - set\*\*:
253
- - - the binding is optional: the property will not be defined
254
- - - the binding is not optional: the property is defined
255
- -
256
- - ````js
257
- *app.directive('testDir', function() {
258
- return {
259
- scope: {
260
- notoptional: '=',
261
- optional: '=?',
262
- },
263
- bindToController: true,
264
- controller: function() {
265
- this.$onInit = function() {
266
- console.log(this.hasOwnProperty('notoptional')) // true
267
- console.log(this.hasOwnProperty('optional')) // false
268
- }
269
- }
270
- }
271
- })
272
- *```
273
- ````
274
- -
275
- -
276
- - ##### Combining directives with different scope defintions
277
- -
278
- - In general it's possible to apply more than one directive to one element, but there might be limitations
279
- - depending on the type of scope required by the directives. The following points will help explain these limitations.
280
- - For simplicity only two directives are taken into account, but it is also applicable for several directives:
281
- -
282
- - - **no scope** + **no scope** => Two directives which don't require their own scope will use their parent's scope
283
- - - **child scope** + **no scope** => Both directives will share one single child scope
284
- - - **child scope** + **child scope** => Both directives will share one single child scope
285
- - - **isolated scope** + **no scope** => The isolated directive will use it's own created isolated scope. The other directive will use
286
- - its parent's scope
287
- - - **isolated scope** + **child scope** => **Won't work!** Only one scope can be related to one element. Therefore these directives cannot
288
- - be applied to the same element.
289
- - - **isolated scope** + **isolated scope** => **Won't work!** Only one scope can be related to one element. Therefore these directives
290
- - cannot be applied to the same element.
291
- -
292
- -
293
- - #### `bindToController`
294
- - This property is used to bind scope properties directly to the controller. It can be either
295
- - `true` or an object hash with the same format as the `scope` property.
296
- -
297
- - When an isolate scope is used for a directive (see above), `bindToController: true` will
298
- - allow a component to have its properties bound to the controller, rather than to scope.
299
- -
300
- - After the controller is instantiated, the initial values of the isolate scope bindings will be bound to the controller
301
- - properties. You can access these bindings once they have been initialized by providing a controller method called
302
- - `$onInit`, which is called after all the controllers on an element have been constructed and had their bindings
303
- - initialized.
304
- -
305
- - It is also possible to set `bindToController` to an object hash with the same format as the `scope` property.
306
- - This will set up the scope bindings to the controller directly. Note that `scope` can still be used
307
- - to define which kind of scope is created. By default, no scope is created. Use `scope: {}` to create an isolate
308
- - scope (useful for component directives).
309
- -
310
- - If both `bindToController` and `scope` are defined and have object hashes, `bindToController` overrides `scope`.
311
- -
312
- -
313
- - #### `controller`
314
- - Controller constructor function. The controller is instantiated before the
315
- - pre-linking phase and can be accessed by other directives (see
316
- - `require` attribute). This allows the directives to communicate with each other and augment
317
- - each other's behavior. The controller is injectable (and supports bracket notation) with the following locals:
318
- -
319
- - - `$scope` - Current scope associated with the element
320
- - - `$element` - Current element
321
- - - `$attrs` - Current attributes object for the element
322
- - - `$transclude` - A transclude linking function pre-bound to the correct transclusion scope:
323
- - `function([scope], cloneLinkingFn, futureParentElement, slotName)`:
324
- - - `scope`: (optional) override the scope.
325
- - - `cloneLinkingFn`: (optional) argument to create clones of the original transcluded content.
326
- - - `futureParentElement` (optional):
327
- - * defines the parent to which the `cloneLinkingFn` will add the cloned elements.
328
- - * default: `$element.parentElement` resp. `$element` for `transclude:'element'` resp. `transclude:true`.
329
- - * only needed for transcludes that are allowed to contain non html elements (e.g. SVG elements)
330
- - and when the `cloneLinkingFn` is passed,
331
- - as those elements need to created and cloned in a special way when they are defined outside their
332
- - usual containers (e.g. like `<svg>`).
333
- - * See also the `directive.templateNamespace` property.
334
- - - `slotName`: (optional) the name of the slot to transclude. If falsy (e.g. `null`, `undefined` or `''`)
335
- - then the default transclusion is provided.
336
- - The `$transclude` function also has a method on it, `$transclude.isSlotFilled(slotName)`, which returns
337
- - `true` if the specified slot contains content (i.e. one or more DOM nodes).
338
- -
339
- - #### `require`
340
- - Require another directive and inject its controller as the fourth argument to the linking function. The
341
- - `require` property can be a string, an array or an object:
342
- - - a **string** containing the name of the directive to pass to the linking function
343
- - - an **array** containing the names of directives to pass to the linking function. The argument passed to the
344
- - linking function will be an array of controllers in the same order as the names in the `require` property
345
- - - an **object** whose property values are the names of the directives to pass to the linking function. The argument
346
- - passed to the linking function will also be an object with matching keys, whose values will hold the corresponding
347
- - controllers.
348
- -
349
- - If the `require` property is an object and `bindToController` is truthy, then the required controllers are
350
- - bound to the controller using the keys of the `require` property. This binding occurs after all the controllers
351
- - have been constructed but before `$onInit` is called.
352
- - If the name of the required controller is the same as the local name (the key), the name can be
353
- - omitted. For example, `{parentDir: '^^'}` is equivalent to `{parentDir: '^^parentDir'}`.
354
- - See the {@link $compileProvider#component} helper for an example of how this can be used.
355
- - If no such required directive(s) can be found, or if the directive does not have a controller, then an error is
356
- - raised (unless no link function is specified and the required controllers are not being bound to the directive
357
- - controller, in which case error checking is skipped). The name can be prefixed with:
358
- -
359
- - - (no prefix) - Locate the required controller on the current element. Throw an error if not found.
360
- - - `?` - Attempt to locate the required controller or pass `null` to the `link` fn if not found.
361
- - - `^` - Locate the required controller by searching the element and its parents. Throw an error if not found.
362
- - - `^^` - Locate the required controller by searching the element's parents. Throw an error if not found.
363
- - - `?^` - Attempt to locate the required controller by searching the element and its parents or pass
364
- - `null` to the `link` fn if not found.
365
- - - `?^^` - Attempt to locate the required controller by searching the element's parents, or pass
366
- - `null` to the `link` fn if not found.
367
- -
368
- -
369
- - #### `controllerAs`
370
- - Identifier name for a reference to the controller in the directive's scope.
371
- - This allows the controller to be referenced from the directive template. This is especially
372
- - useful when a directive is used as component, i.e. with an `isolate` scope. It's also possible
373
- - to use it in a directive without an `isolate` / `new` scope, but you need to be aware that the
374
- - `controllerAs` reference might overwrite a property that already exists on the parent scope.
375
- -
376
- -
377
- - #### `restrict`
378
- - String of subset of `EA` which restricts the directive to a specific directive
379
- - declaration style. If omitted, the defaults (elements and attributes) are used.
380
- -
381
- - - `E` - Element name (default): `<my-directive></my-directive>`
382
- - - `A` - Attribute (default): `<div my-directive="exp"></div>`-
383
- -
384
- - #### `templateNamespace`
385
- - String representing the document type used by the markup in the template.
386
- - AngularTS needs this information as those elements need to be created and cloned
387
- - in a special way when they are defined outside their usual containers like `<svg>` and `<math>`.
388
- -
389
- - - `html` - All root nodes in the template are HTML. Root nodes may also be
390
- - top-level elements such as `<svg>` or `<math>`.
391
- - - `svg` - The root nodes in the template are SVG elements (excluding `<math>`).
392
- - - `math` - The root nodes in the template are MathML elements (excluding `<svg>`).
393
- -
394
- - If no `templateNamespace` is specified, then the namespace is considered to be `html`.
395
- -
396
- - #### `template`
397
- - HTML markup that may:
398
- - - Replace the contents of the directive's element (default).
399
- - - Replace the directive's element itself (if `replace` is true - DEPRECATED).
400
- - - Wrap the contents of the directive's element (if `transclude` is true).
401
- -
402
- - Value may be:
403
- -
404
- - - A string. For example `<div red-on-hover>{{delete_str}}</div>`.
405
- - - A function which takes two arguments `tElement` and `tAttrs` (described in the `compile`
406
- - function api below) and returns a string value.
407
- -
408
- -
409
- - #### `templateUrl`
410
- - This is similar to `template` but the template is loaded from the specified URL, asynchronously.
411
- -
412
- - Because template loading is asynchronous the compiler will suspend compilation of directives on that element
413
- - for later when the template has been resolved. In the meantime it will continue to compile and link
414
- - sibling and parent elements as though this element had not contained any directives.
415
- -
416
- - The compiler does not suspend the entire compilation to wait for templates to be loaded because this
417
- - would result in the whole app "stalling" until all templates are loaded asynchronously - even in the
418
- - case when only one deeply nested directive has `templateUrl`.
419
- -
420
- - Template loading is asynchronous even if the template has been preloaded into the {@link $templateCache}.
421
- -
422
- - You can specify `templateUrl` as a string representing the URL or as a function which takes two
423
- - arguments `tElement` and `tAttrs` (described in the `compile` function api below) and returns
424
- - a string value representing the url. In either case, the template URL is passed through {@link
425
- - $sce#getTrustedResourceUrl $sce.getTrustedResourceUrl}.
426
- -
427
- -
428
- - #### `replace`
429
- - <div class="alert alert-danger">
430
- - **Note:** `replace` is deprecated in AngularTS and has been removed in the new Angular (v2+).
431
- - </div>
432
- -
433
- - Specifies what the template should replace. Defaults to `false`.
434
- -
435
- - - `true` - the template will replace the directive's element.
436
- - - `false` - the template will replace the contents of the directive's element.
437
- -
438
- - The replacement process migrates all of the attributes / classes from the old element to the new
439
- - one. See the {@link guide/directive#template-expanding-directive
440
- - Directives Guide} for an example.
441
- -
442
- - There are very few scenarios where element replacement is required for the application function,
443
- - the main one being reusable custom components that are used within SVG contexts
444
- - (because SVG doesn't work with custom elements in the DOM tree).
445
- -
446
- - #### `transclude`
447
- - Extract the contents of the element where the directive appears and make it available to the directive.
448
- - The contents are compiled and provided to the directive as a **transclusion function**. See the
449
- - {@link $compile#transclusion Transclusion} section below.
450
- -
451
- -
452
- - #### `compile`
453
- -
454
- - ```js
455
-
456
- ```
457
-
458
- - function compile(tElement, tAttrs, transclude) { ... }
459
- - ```
460
-
461
- ```
462
-
463
- -
464
- - The compile function deals with transforming the template DOM. Since most directives do not do
465
- - template transformation, it is not used often. The compile function takes the following arguments:
466
- -
467
- - - `tElement` - template element - The element where the directive has been declared. It is
468
- - safe to do template transformation on the element and child elements only.
469
- -
470
- - - `tAttrs` - template attributes - Normalized list of attributes declared on this element shared
471
- - between all directive compile functions.
472
- -
473
- - - `transclude` - [*DEPRECATED*!] A transclude linking function: `function(scope, cloneLinkingFn)`
474
- -
475
- - <div class="alert alert-warning">
476
- - **Note:** The template instance and the link instance may be different objects if the template has
477
- - been cloned. For this reason it is **not** safe to do anything other than DOM transformations that
478
- - apply to all cloned DOM nodes within the compile function. Specifically, DOM listener registration
479
- - should be done in a linking function rather than in a compile function.
480
- - </div>
481
-
482
- - <div class="alert alert-warning">
483
- - **Note:** The compile function cannot handle directives that recursively use themselves in their
484
- - own templates or compile functions. Compiling these directives results in an infinite loop and
485
- - stack overflow errors.
486
- -
487
- - This can be avoided by manually using `$compile` in the postLink function to imperatively compile
488
- - a directive's template instead of relying on automatic template compilation via `template` or
489
- - `templateUrl` declaration or manual compilation inside the compile function.
490
- - </div>
491
- -
492
- - <div class="alert alert-danger">
493
- - **Note:** The `transclude` function that is passed to the compile function is deprecated, as it
494
- - e.g. does not know about the right outer scope. Please use the transclude function that is passed
495
- - to the link function instead.
496
- - </div>
497
-
498
- - A compile function can have a return value which can be either a function or an object.
499
- -
500
- - - returning a (post-link) function - is equivalent to registering the linking function via the
501
- - `link` property of the config object when the compile function is empty.
502
- -
503
- - - returning an object with function(s) registered via `pre` and `post` properties - allows you to
504
- - control when a linking function should be called during the linking phase. See info about
505
- - pre-linking and post-linking functions below.
506
- -
507
- -
508
- - #### `link`
509
- - This property is used only if the `compile` property is not defined.
510
- -
511
- - ```js
512
-
513
- ```
514
-
515
- - function link(scope, iElement, iAttrs, controller, transcludeFn) { ... }
516
- - ```
517
-
518
- ```
519
-
520
- -
521
- - The link function is responsible for registering DOM listeners as well as updating the DOM. It is
522
- - executed after the template has been cloned. This is where most of the directive logic will be
523
- - put.
524
- -
525
- - - `scope` - {@link ng.$rootScope.Scope Scope} - The scope to be used by the
526
- - directive for registering {@link ng.$rootScope.Scope#$watch watches}.
527
- -
528
- - - `iElement` - instance element - The element where the directive is to be used. It is safe to
529
- - manipulate the children of the element only in `postLink` function since the children have
530
- - already been linked.
531
- -
532
- - - `iAttrs` - instance attributes - Normalized list of attributes declared on this element shared
533
- - between all directive linking functions.
534
- -
535
- - - `controller` - the directive's required controller instance(s) - Instances are shared
536
- - among all directives, which allows the directives to use the controllers as a communication
537
- - channel. The exact value depends on the directive's `require` property:
538
- - * no controller(s) required: the directive's own controller, or `undefined` if it doesn't have one
539
- - * `string`: the controller instance
540
- - * `array`: array of controller instances
541
- -
542
- - If a required controller cannot be found, and it is optional, the instance is `null`,
543
- - otherwise the {@link error:$compile:ctreq Missing Required Controller} error is thrown.
544
- -
545
- - Note that you can also require the directive's own controller - it will be made available like
546
- - any other controller.
547
- -
548
- - - `transcludeFn` - A transclude linking function pre-bound to the correct transclusion scope.
549
- - This is the same as the `$transclude` parameter of directive controllers,
550
- - see {@link ng.$compile#-controller- the controller section for details}.
551
- - `function([scope], cloneLinkingFn, futureParentElement)`.
552
- -
553
- - #### Pre-linking function
554
- -
555
- - Executed before the child elements are linked. Not safe to do DOM transformation since the
556
- - compiler linking function will fail to locate the correct elements for linking.
557
- -
558
- - #### Post-linking function
559
- -
560
- - Executed after the child elements are linked.
561
- -
562
- - Note that child elements that contain `templateUrl` directives will not have been compiled
563
- - and linked since they are waiting for their template to load asynchronously and their own
564
- - compilation and linking has been suspended until that occurs.
565
- -
566
- - It is safe to do DOM transformation in the post-linking function on elements that are not waiting
567
- - for their async templates to be resolved.
568
- -
569
- -
570
- - ### Transclusion
571
- -
572
- - Transclusion is the process of extracting a collection of DOM elements from one part of the DOM and
573
- - copying them to another part of the DOM, while maintaining their connection to the original AngularTS
574
- - scope from where they were taken.
575
- -
576
- - Transclusion is used (often with {@link ngTransclude}) to insert the
577
- - original contents of a directive's element into a specified place in the template of the directive.
578
- - The beneit of transclusion, over simply moving the DOM elements manually, is that the transcluded
579
- - content has access to the properties on the scope from which it was taken, even if the directive
580
- - has isolated scope.
581
- - See the {@link guide/directive#creating-a-directive-that-wraps-other-elements Directives Guide}.
582
- -
583
- - This makes it possible for the widget to have private state for its template, while the transcluded
584
- - content has access to its originating scope.
585
- -
586
- - <div class="alert alert-warning">
587
- - **Note:** When testing an element transclude directive you must not place the directive at the root of the
588
- - DOM fragment that is being compiled. See {@link guide/unit-testing#testing-transclusion-directives
589
- - Testing Transclusion Directives}.
590
- - </div>
591
- -
592
- - There are three kinds of transclusion depending upon whether you want to transclude just the contents of the
593
- - directive's element, the entire element or multiple parts of the element contents:
594
- -
595
- - - `true` - transclude the content (i.e. the child nodes) of the directive's element.
596
- - - `'element'` - transclude the whole of the directive's element including any directives on this
597
- - element that are defined at a lower priority than this directive. When used, the `template`
598
- - property is ignored.
599
- - - **`{...}` (an object hash):** - map elements of the content onto transclusion "slots" in the template.
600
- -
601
- - **Multi-slot transclusion** is declared by providing an object for the `transclude` property.
602
- -
603
- - This object is a map where the keys are the name of the slot to fill and the value is an element selector
604
- - used to match the HTML to the slot. The element selector should be in normalized form (e.g. `myElement`)
605
- - and will match the standard element variants (e.g. `my-element`, `my:element`, `data-my-element`, etc).
606
- -
607
- - For further information check out the guide on {@link guide/directive#matching-directives Matching Directives}.
608
- -
609
- - If the element selector is prefixed with a `?` then that slot is optional.
610
- -
611
- - For example, the transclude object `{ slotA: '?myCustomElement' }` maps `<my-custom-element>` elements to
612
- - the `slotA` slot, which can be accessed via the `$transclude` function or via the {@link ngTransclude} directive.
613
- -
614
- - Slots that are not marked as optional (`?`) will trigger a compile time error if there are no matching elements
615
- - in the transclude content. If you wish to know if an optional slot was filled with content, then you can call
616
- - `$transclude.isSlotFilled(slotName)` on the transclude function passed to the directive's link function and
617
- - injectable into the directive's controller.
618
- -
619
- -
620
- - #### Transclusion Functions
621
- -
622
- - When a directive requests transclusion, the compiler extracts its contents and provides a \*\*transclusion
623
- - function\*\* to the directive's `link` function and `controller`. This transclusion function is a special
624
- - **linking function** that will return the compiled contents linked to a new transclusion scope.
625
- -
626
- - <div class="alert alert-info">
627
- - If you are just using {@link ngTransclude} then you don't need to worry about this function, since
628
- - ngTransclude will deal with it for us.
629
- - </div>
630
- -
631
- - If you want to manually control the insertion and removal of the transcluded content in your directive
632
- - then you must use this transclude function. When you call a transclude function it returns a JQLite/JQuery
633
- - object that contains the compiled DOM, which is linked to the correct transclusion scope.
634
- -
635
- - When you call a transclusion function you can pass in a **clone attach function**. This function accepts
636
- - two parameters, `function(clone, scope) { ... }`, where the `clone` is a fresh compiled copy of your transcluded
637
- - content and the `scope` is the newly created transclusion scope, which the clone will be linked to.
638
- -
639
- - <div class="alert alert-info">
640
- - **Best Practice**: Always provide a `cloneFn` (clone attach function) when you call a transclude function
641
- - since you then get a fresh clone of the original DOM and also have access to the new transclusion scope.
642
- - </div>
643
- -
644
- - It is normal practice to attach your transcluded content (`clone`) to the DOM inside your \*\*clone
645
- - attach function\*\*:
646
- -
647
- - ```js
648
-
649
- ```
650
-
651
- - let transcludedContent, transclusionScope;
652
- -
653
- - $transclude(function(clone, scope) {
654
- - element.append(clone);
655
- - transcludedContent = clone;
656
- - transclusionScope = scope;
657
- - });
658
- - ```
659
-
660
- ```
661
-
662
- -
663
- - Later, if you want to remove the transcluded content from your DOM then you should also destroy the
664
- - associated transclusion scope:
665
- -
666
- - ```js
667
-
668
- ```
669
-
670
- - transcludedContent.remove();
671
- - transclusionScope.$destroy();
672
- - ```
673
-
674
- ```
675
-
676
- -
677
- - <div class="alert alert-info">
678
- - **Best Practice**: if you intend to add and remove transcluded content manually in your directive
679
- - (by calling the transclude function to get the DOM and calling `element.remove()` to remove it),
680
- - then you are also responsible for calling `$destroy` on the transclusion scope.
681
- - </div>
682
- -
683
- - The built-in DOM manipulation directives, such as {@link ngIf}, {@link ngSwitch} and {@link ngRepeat}
684
- - automatically destroy their transcluded clones as necessary so you do not need to worry about this if
685
- - you are simply using {@link ngTransclude} to inject the transclusion into your directive.
686
- -
687
- -
688
- - #### Transclusion Scopes
689
- -
690
- - When you call a transclude function it returns a DOM fragment that is pre-bound to a \*\*transclusion
691
- - scope\*\*. This scope is special, in that it is a child of the directive's scope (and so gets destroyed
692
- - when the directive's scope gets destroyed) but it inherits the properties of the scope from which it
693
- - was taken.
694
- -
695
- - For example consider a directive that uses transclusion and isolated scope. The DOM hierarchy might look
696
- - like this:
697
- -
698
- - ```html
699
-
700
- ```
701
-
702
- - <div ng-app>
703
- - <div isolate>
704
- - <div transclusion>
705
- - </div>
706
- - </div>
707
- - </div>
708
- - ```
709
-
710
- ```
711
-
712
- -
713
- - The `$parent` scope hierarchy will look like this:
714
- - ```
715
- - $rootScope
716
- - isolate
717
- - transclusion
718
- ```
719
- -
720
- - but the scopes will inherit prototypically from different scopes to their `$parent`.
721
- - ```
722
- - $rootScope
723
- - transclusion
724
- - isolate
725
- ```
726
- -
727
- -
728
- - ### Attributes
729
- -
730
- - The {@link ng.$compile.directive.Attributes Attributes} object - passed as a parameter in the
731
- - `link()` or `compile()` functions. It has a variety of uses.
732
- -
733
- - - _Accessing normalized attribute names:_ Directives like `ngBind` can be expressed in many ways:
734
- - `data-ng-bind`, or `ng-bind`. The attributes object allows for normalized access
735
- - to the attributes.
736
- -
737
- - - _Directive inter-communication:_ All directives share the same instance of the attributes
738
- - object which allows the directives to use the attributes object as inter directive
739
- - communication.
740
- -
741
- - - _Supports interpolation:_ Interpolation attributes are assigned to the attribute object
742
- - allowing other directives to read the interpolated value.
743
- -
744
- - - _Observing interpolated attributes:_ Use `$observe` to observe the value changes of attributes
745
- - that contain interpolation (e.g. `src="{{bar}}"`). Not only is this very efficient but it's also
746
- - the only way to easily get the actual value because during the linking phase the interpolation
747
- - hasn't been evaluated yet and so the value is at this time set to `undefined`.
748
- -
749
- - ```js
750
-
751
- ```
752
-
753
- - function linkingFn(scope, elm, attrs, ctrl) {
754
- - // get the attribute value
755
- - console.log(attrs.ngModel);
756
- -
757
- - // change the attribute
758
- - attrs.$set('ngModel', 'new value');
759
- -
760
- - // observe changes to interpolated attribute
761
- - attrs.$observe('ngModel', function(value) {
762
- - console.log('ngModel has changed value to ' + value);
763
- - });
764
- - }
765
- - ```
766
-
767
- ```
768
-
769
- -
770
- -
771
- -
772
- - @param {string|Element} element Element or HTML string to compile into a template function.
773
- - @param {function(angular.Scope, cloneAttachFn=)} transclude function available to directives - DEPRECATED.
774
- -
775
- - <div class="alert alert-danger">
776
- - **Note:** Passing a `transclude` function to the $compile function is deprecated, as it
777
- - e.g. will not use the right outer scope. Please pass the transclude function as a
778
- - `parentBoundTranscludeFn` to the link function instead.
779
- - </div>
780
- -
781
- - @param {number} maxPriority only apply directives lower than given priority (Only effects the
782
- - root element(s), not their children)
783
- - @returns {function(scope, cloneAttachFn=, options=)} a link function which is used to bind template
784
- - (a DOM element/tree) to a scope. Where:
785
- -
786
- - - `scope` - A {@link ng.$rootScope.Scope Scope} to bind to.
787
- - - `cloneAttachFn` - If `cloneAttachFn` is provided, then the link function will clone the
788
- - `template` and call the `cloneAttachFn` function allowing the caller to attach the
789
- - cloned elements to the DOM document at the appropriate place. The `cloneAttachFn` is
790
- - called as: <br/> `cloneAttachFn(clonedElement, scope)` where:
791
- -
792
- - * `clonedElement` - is a clone of the original `element` passed into the compiler.
793
- - * `scope` - is the current scope with which the linking function is working with.
794
- -
795
- - - `options` - An optional object hash with linking options. If `options` is provided, then the following
796
- - keys may be used to control linking behavior:
797
- -
798
- - * `parentBoundTranscludeFn` - the transclude function made available to
799
- - directives; if given, it will be passed through to the link functions of
800
- - directives found in `element` during compilation.
801
- - * `transcludeControllers` - an object hash with keys that map controller names
802
- - to a hash with the key `instance`, which maps to the controller instance;
803
- - if given, it will make the controllers available to directives on the compileNode:
804
- - ```
805
- - {
806
- - parent: {
807
- - instance: parentControllerInstance
808
- - }
809
- - }
810
- - ```
811
- - * `futureParentElement` - defines the parent to which the `cloneAttachFn` will add
812
- - the cloned elements; only needed for transcludes that are allowed to contain non HTML
813
- - elements (e.g. SVG elements). See also the `directive.controller` property.
814
- -
815
- - Calling the linking function returns the element of the template. It is either the original
816
- - element passed in, or the clone of the element if the `cloneAttachFn` is provided.
817
- -
818
- - After linking the view is not updated until after a call to `$digest`, which typically is done by
819
- - AngularTS automatically.
820
- -
821
- - If you need access to the bound view, there are two ways to do it:
822
- -
823
- - - If you are not asking the linking function to clone the template, create the DOM element(s)
824
- - before you send them to the compiler and keep this reference around.
825
- - ```js
826
-
827
- ```
828
-
829
- - let element = angular.element('<p>{{total}}</p>');
830
- - $compile(element)(scope);
831
- - ```
832
-
833
- ```
834
-
835
- -
836
- - - if on the other hand, you need the element to be cloned, the view reference from the original
837
- - example would not point to the clone, but rather to the original template that was cloned. In
838
- - this case, you can access the clone either via the `cloneAttachFn` or the value returned by the
839
- - linking function:
840
- - ```js
841
-
842
- ```
843
-
844
- - let templateElement = angular.element('<p>{{total}}</p>');
845
- - let clonedElement = $compile(templateElement)(scope, function(clonedElement, scope) {
846
- - // Attach the clone to DOM document at the right place.
847
- - });
848
- -
849
- - // Now we have reference to the cloned DOM via `clonedElement`.
850
- - // NOTE: The `clonedElement` returned by the linking function is the same as the
851
- - // `clonedElement` passed to `cloneAttachFn`.
852
- - ```
853
-
854
- ```
855
-
856
- -
857
- -
858
- - For information on how the compiler works, see the
859
- - {@link guide/compiler AngularTS HTML Compiler} section of the Developer Guide.
860
- -
861
- - @knownIssue
862
- -
863
- - ### Double Compilation
864
- - Double compilation occurs when an already compiled part of the DOM gets
865
- compiled again. This is an undesired effect and can lead to misbehaving directives, performance issues,
866
- and memory leaks. Refer to the Compiler Guide {@link guide/compiler#double-compilation-and-how-to-avoid-it
867
- section on double compilation} for an in-depth explanation and ways to avoid it.
868
-
869
- - @knownIssue
870
-
871
- ### Issues with `replace: true`
872
-
873
- -
874
- - <div class="alert alert-danger">
875
- - **Note**: {@link $compile#-replace- `replace: true`} is deprecated and not recommended to use,
876
- - mainly due to the issues listed here. It has been completely removed in the new Angular.
877
- - </div>
878
- -
879
- - #### Attribute values are not merged
880
- -
881
- - When a `replace` directive encounters the same attribute on the original and the replace node,
882
- - it will simply deduplicate the attribute and join the values with a space or with a `;` in case of
883
- - the `style` attribute.
884
- - ```html
885
-
886
- ```
887
-
888
- - Original Node: <span class="original" style="color: red;"></span>
889
- - Replace Template: <span class="replaced" style="background: blue;"></span>
890
- - Result: <span class="original replaced" style="color: red; background: blue;"></span>
891
- - ```
892
-
893
- ```
894
-
895
- -
896
- - That means attributes that contain AngularTS expressions will not be merged correctly, e.g.
897
- - {@link ngShow} or {@link ngClass} will cause a {@link $parse} error:
898
- -
899
- - ```html
900
-
901
- ```
902
-
903
- - Original Node: <span ng-class="{'something': something}" ng-show="!condition"></span>
904
- - Replace Template: <span ng-class="{'else': else}" ng-show="otherCondition"></span>
905
- - Result: <span ng-class="{'something': something} {'else': else}" ng-show="!condition otherCondition"></span>
906
- - ```
907
-
908
- ``
909
- ```
910
-
911
- -
912
- - See issue [#5695](https://github.com/angular/angular.js/issues/5695).
913
- -
914
- - #### Directives are not deduplicated before compilation
915
- -
916
- - When the original node and the replace template declare the same directive(s), they will be
917
- - {@link guide/compiler#double-compilation-and-how-to-avoid-it compiled twice} because the compiler
918
- - does not deduplicate them. In many cases, this is not noticeable, but e.g. {@link ngModel} will
919
- - attach `$formatters` and `$parsers` twice.
920
- -
921
- - See issue [#2573](https://github.com/angular/angular.js/issues/2573).
922
- -
923
- - #### `transclude: element` in the replace template root can have unexpected effects
924
- -
925
- - When the replace template has a directive at the root node that uses
926
- - {@link $compile#-transclude- `transclude: element`}, e.g.
927
- - {@link ngIf} or {@link ngRepeat}, the DOM structure or scope inheritance can be incorrect.
928
- - See the following issues:
929
- -
930
- - - Incorrect scope on replaced element:
931
- - [#9837](https://github.com/angular/angular.js/issues/9837)
932
- - - Different DOM between `template` and `templateUrl`:
933
- - [#10612](https://github.com/angular/angular.js/issues/14326)
934
- - \*/
935
-
936
- /\*\*
937
-
938
- - @ngdoc directive
939
- - @name ngProp
940
- - @restrict A
941
- - @element ANY
942
- -
943
- - @usage
944
- -
945
- - ```html
946
-
947
- ```
948
-
949
- - <ANY ng-prop-propname="expression">
950
- - </ANY>
951
- - ```
952
-
953
- ```
954
-
955
- -
956
- - or with uppercase letters in property (e.g. "propName"):
957
- -
958
- -
959
- - ```html
960
-
961
- ```
962
-
963
- - <ANY ng-prop-prop_name="expression">
964
- - </ANY>
965
- - ```
966
-
967
- ```
968
-
969
- -
970
- -
971
- - @description
972
- - The `ngProp` directive binds an expression to a DOM element property.
973
- - `ngProp` allows writing to arbitrary properties by including
974
- - the property name in the attribute, e.g. `ng-prop-value="'my value'"` binds 'my value' to
975
- - the `value` property.
976
- -
977
- - Usually, it's not necessary to write to properties in AngularTS, as the built-in directives
978
- - handle the most common use cases (instead of the above example, you would use {@link ngValue}).
979
- -
980
- - However, [custom elements](https://developer.mozilla.org/docs/Web/Web_Components/Using_custom_elements)
981
- - often use custom properties to hold data, and `ngProp` can be used to provide input to these
982
- - custom elements.
983
- -
984
- - ## Binding to camelCase properties
985
- -
986
- - Since HTML attributes are case-insensitive, camelCase properties like `innerHTML` must be escaped.
987
- - AngularTS uses the underscore (\_) in front of a character to indicate that it is uppercase, so
988
- - `innerHTML` must be written as `ng-prop-inner_h_t_m_l="expression"` (Note that this is just an
989
- - example, and for binding HTML {@link ngBindHtml} should be used.
990
- -
991
- - ## Security
992
- -
993
- - Binding expressions to arbitrary properties poses a security risk, as properties like `innerHTML`
994
- - can insert potentially dangerous HTML into the application, e.g. script tags that execute
995
- - malicious code.
996
- - For this reason, `ngProp` applies Strict Contextual Escaping with the {@link ng.$sce $sce service}.
997
- - This means vulnerable properties require their content to be "trusted", based on the
998
- - context of the property. For example, the `innerHTML` is in the `HTML` context, and the
999
- - `iframe.src` property is in the `RESOURCE_URL` context, which requires that values written to
1000
- - this property are trusted as a `RESOURCE_URL`.
1001
- -
1002
- - This can be set explicitly by calling $sce.trustAs(type, value) on the value that is
1003
- - trusted before passing it to the `ng-prop-*` directive. There are exist shorthand methods for
1004
- - each context type in the form of {@link ng.$sce#trustAsResourceUrl $sce.trustAsResourceUrl()} et al.
1005
- -
1006
- - In some cases you can also rely upon automatic sanitization of untrusted values - see below.
1007
- -
1008
- - Based on the context, other options may exist to mark a value as trusted / configure the behavior
1009
- - of {@link ng.$sce}. For example, to restrict the `RESOURCE_URL` context to specific origins, use
1010
- - the {@link $sceDelegateProvider#trustedResourceUrlList trustedResourceUrlList()}
1011
- - and {@link $sceDelegateProvider#bannedResourceUrlList bannedResourceUrlList()}.
1012
- -
1013
- - {@link ng.$sce#what-trusted-context-types-are-supported- Find out more about the different context types}.
1014
- -
1015
- - ### HTML Sanitization
1016
- -
1017
- - By default, `$sce` will throw an error if it detects untrusted HTML content, and will not bind the
1018
- - content.
1019
- - However, if you include the {@link ngSanitize ngSanitize module}, it will try to sanitize the
1020
- - potentially dangerous HTML, e.g. strip non-trusted tags and attributes when binding to
1021
- - `innerHTML`.
1022
- -
1023
- - \*/
1024
-
1025
- /\*\* @ngdoc directive
1026
-
1027
- - @name ngOn
1028
- - @restrict A
1029
- - @element ANY
1030
- -
1031
- - @usage
1032
- -
1033
- - ```html
1034
-
1035
- ```
1036
-
1037
- - <ANY ng-on-eventname="expression">
1038
- - </ANY>
1039
- - ```
1040
-
1041
- ```
1042
-
1043
- -
1044
- - or with uppercase letters in property (e.g. "eventName"):
1045
- -
1046
- -
1047
- - ```html
1048
-
1049
- ```
1050
-
1051
- - <ANY ng-on-event_name="expression">
1052
- - </ANY>
1053
- - ```
1054
-
1055
- ```
1056
-
1057
- -
1058
- - @description
1059
- - The `ngOn` directive adds an event listener to a DOM element via
1060
- - {@link angular.element angular.element().on()}, and evaluates an expression when the event is
1061
- - fired.
1062
- - `ngOn` allows adding listeners for arbitrary events by including
1063
- - the event name in the attribute, e.g. `ng-on-drop="onDrop()"` executes the 'onDrop()' expression
1064
- - when the `drop` event is fired.
1065
- -
1066
- - AngularTS provides specific directives for many events, such as {@link ngClick}, so in most
1067
- - cases it is not necessary to use `ngOn`. However, AngularTS does not support all events
1068
- - (e.g. the `drop` event in the example above), and new events might be introduced in later DOM
1069
- - standards.
1070
- -
1071
- - Another use-case for `ngOn` is listening to
1072
- - [custom events](https://developer.mozilla.org/docs/Web/Guide/Events/Creating_and_triggering_events)
1073
- - fired by
1074
- - [custom elements](https://developer.mozilla.org/docs/Web/Web_Components/Using_custom_elements).
1075
- -
1076
- - ## Binding to camelCase properties
1077
- -
1078
- - Since HTML attributes are case-insensitive, camelCase properties like `myEvent` must be escaped.
1079
- - AngularTS uses the underscore (\_) in front of a character to indicate that it is uppercase, so
1080
- - `myEvent` must be written as `ng-on-my_event="expression"`.
1081
- -
1082
- - \*/
1083
-
1084
- /\*\*
1085
-
1086
- - @ngdoc type
1087
- - @name $compile.directive.Attributes
1088
- -
1089
- - @description
1090
- - A shared object between directive compile / linking functions which contains normalized DOM
1091
- - element attributes. The values reflect current binding state `{{ }}`. The normalization is
1092
- - needed since all of these are treated as equivalent in AngularTS:
1093
- -
1094
- - ```
1095
-
1096
- ```
1097
-
1098
- - <span ng:bind="a" ng-bind="a" data-ng-bind="a" ng-bind="a">
1099
- - ```
1100
- */
1101
- ```
1102
-
1103
- /\*\*
1104
-
1105
- - @ngdoc property
1106
- - @name $compile.directive.Attributes#$attr
1107
- -
1108
- - @description
1109
- - A map of DOM element attribute names to the normalized name. This is
1110
- - needed to do reverse lookup from normalized name back to actual name.
1111
- \*/
1112
-
1113
- /\*\*
1114
-
1115
- - @ngdoc method
1116
- - @name $compile.directive.Attributes#$set
1117
- - @kind function
1118
- -
1119
- - @description
1120
- - Set DOM element attribute value.
1121
- -
1122
- -
1123
- - @param {string} str1 Normalized element attribute name of the property to modify. The name is
1124
- - reverse-translated using the {@link ng.$compile.directive.Attributes#$attr $attr}
1125
- - property to the original name.
1126
- - @param {string} str2 Value to set the attribute to. The value can be an interpolated string.
1127
- - @returns {string}
1128
- \*/