@angular-wave/angular.ts 0.7.5 → 0.7.8
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.
- package/@types/animations/raf-scheduler.d.ts +2 -2
- package/@types/animations/shared.d.ts +0 -1
- package/@types/core/compile/attributes.d.ts +3 -3
- package/@types/core/compile/compile.d.ts +1 -1
- package/@types/core/di/injector.d.ts +0 -1
- package/@types/core/di/internal-injector.d.ts +1 -0
- package/@types/core/di/ng-module.d.ts +5 -0
- package/@types/core/filter/filter.d.ts +11 -13
- package/@types/core/sanitize/sanitize-uri.d.ts +3 -6
- package/@types/core/scope/scope.d.ts +1 -3
- package/@types/directive/attrs/attrs.d.ts +7 -1
- package/@types/directive/events/events.d.ts +9 -3
- package/@types/directive/http/http.d.ts +6 -2
- package/@types/directive/include/include.d.ts +2 -2
- package/@types/directive/input/input.d.ts +2 -12
- package/@types/directive/messages/messages.d.ts +9 -48
- package/@types/directive/model/model.d.ts +3 -3
- package/@types/directive/options/options.d.ts +13 -20
- package/@types/directive/setter/setter.d.ts +2 -2
- package/@types/directive/switch/switch.d.ts +1 -0
- package/@types/directive/transclude/transclude.d.ts +10 -6
- package/@types/interface.d.ts +54 -18
- package/@types/router/common/glob.d.ts +5 -1
- package/@types/router/directives/view-directive.d.ts +2 -19
- package/@types/router/globals.d.ts +1 -2
- package/@types/router/state/state-registry.d.ts +1 -2
- package/@types/router/url/url-service.d.ts +7 -9
- package/@types/services/anchor-scroll.d.ts +1 -1
- package/@types/{core → services/exception}/exception-handler.d.ts +4 -4
- package/@types/{core/error-handler.d.ts → services/exception/interface.d.ts} +1 -1
- package/@types/services/http/http.d.ts +0 -2
- package/@types/services/http/interface.d.ts +2 -2
- package/@types/services/http-backend/http-backend.d.ts +13 -21
- package/@types/services/location/interface.d.ts +8 -0
- package/@types/{core → services}/location/location.d.ts +52 -12
- package/@types/{core → services}/sce/sce.d.ts +1 -1
- package/@types/services/template-cache/interface.d.ts +8 -2
- package/@types/services/template-cache/template-cache.d.ts +1 -1
- package/@types/services/template-request.d.ts +1 -1
- package/@types/shared/cache.d.ts +0 -2
- package/@types/shared/dom.d.ts +6 -0
- package/@types/shared/test-utils.d.ts +1 -0
- package/@types/shared/url-utils/interface.d.ts +47 -0
- package/@types/{core → shared}/url-utils/url-utils.d.ts +26 -13
- package/@types/shared/utils.d.ts +23 -0
- package/Makefile +3 -2
- package/dist/angular-ts.esm.js +1188 -1364
- package/dist/angular-ts.umd.js +1188 -1364
- package/dist/angular-ts.umd.min.js +1 -1
- package/docs/assets/scss/index.scss +12 -0
- package/docs/content/_index.md +15 -4
- package/docs/content/docs/directive/bind.md +72 -0
- package/docs/content/docs/directive/click.md +3 -0
- package/docs/content/docs/directive/dblclick.md +3 -0
- package/docs/content/docs/directive/get.md +203 -0
- package/docs/content/docs/directive/keydown.md +38 -0
- package/docs/content/docs/directive/keyup.md +38 -0
- package/docs/content/docs/directive/load.md +43 -0
- package/docs/content/docs/provider/templateCacheProvider.md +66 -1
- package/docs/content/docs/service/templateCache.md +2 -2
- package/docs/layouts/partials/hooks/head-end.html +1 -1
- package/docs/layouts/shortcodes/showcss.html +2 -0
- package/docs/static/examples/ng-bind/ng-bind.html +9 -0
- package/docs/static/examples/ng-keydown/ng-keydown.html +9 -0
- package/docs/static/examples/ng-keyup/ng-keyup.html +9 -0
- package/docs/static/examples/ng-load/ng-load.html +8 -0
- package/docs/static/typedoc/assets/hierarchy.js +1 -1
- package/docs/static/typedoc/assets/navigation.js +1 -1
- package/docs/static/typedoc/assets/search.js +1 -1
- package/docs/static/typedoc/classes/NgModule.html +32 -0
- package/docs/static/typedoc/classes/TemplateCacheProvider.html +1 -1
- package/docs/static/typedoc/hierarchy.html +1 -1
- package/docs/static/typedoc/index.html +1 -1
- package/docs/static/typedoc/interfaces/Directive.html +5 -4
- package/docs/static/typedoc/interfaces/HttpProviderDefaults.html +1 -1
- package/docs/static/typedoc/interfaces/HttpResponse.html +2 -3
- package/docs/static/typedoc/interfaces/Provider.html +15 -10
- package/docs/static/typedoc/interfaces/RequestConfig.html +1 -1
- package/docs/static/typedoc/interfaces/RequestShortcutConfig.html +1 -1
- package/docs/static/typedoc/interfaces/TemplateCache.html +7 -0
- package/docs/static/typedoc/types/AnnotatedDirectiveFactory.html +1 -0
- package/docs/static/typedoc/types/DirectiveFactory.html +1 -2
- package/docs/static/typedoc/types/DirectiveFactoryFn.html +1 -0
- package/docs/static/typedoc/types/HttpResponseStatus.html +1 -0
- package/docs/static/typedoc/types/{TemplateCache.html → SwapModeType.html} +1 -1
- package/docs/static/typedoc/variables/SwapMode.html +11 -0
- package/legacy.d.ts +0 -14
- package/package.json +1 -3
- package/src/animations/animate-children-directive.js +2 -2
- package/src/animations/raf-scheduler.js +1 -1
- package/src/animations/shared.js +0 -9
- package/src/core/compile/attributes.js +1 -1
- package/src/core/compile/compile.js +3 -3
- package/src/core/di/injector.js +4 -17
- package/src/core/di/internal-injector.js +4 -1
- package/src/core/di/ng-module.js +12 -27
- package/src/core/filter/filter.js +28 -28
- package/src/core/parse/interpreter.js +32 -38
- package/src/core/sanitize/sanitize-uri.js +3 -3
- package/src/core/scope/scope.js +2 -7
- package/src/directive/attrs/attrs.js +7 -4
- package/src/directive/bind/bind.js +16 -4
- package/src/directive/bind/bind.spec.js +13 -0
- package/src/directive/events/events.js +7 -3
- package/src/directive/events/events.md +0 -41
- package/src/directive/http/delete.spec.js +2 -0
- package/src/directive/http/get.spec.js +280 -3
- package/src/directive/http/http.js +100 -12
- package/src/directive/http/http.test.js +2 -2
- package/src/directive/http/post.spec.js +2 -0
- package/src/directive/http/put.spec.js +2 -0
- package/src/directive/include/include.js +7 -7
- package/src/directive/input/input.js +6 -28
- package/src/directive/messages/messages.js +5 -1
- package/src/directive/model/model.js +1 -1
- package/src/directive/options/options.js +454 -464
- package/src/directive/repeat/repeat.js +175 -153
- package/src/directive/setter/setter.js +13 -15
- package/src/directive/setter/setter.spec.js +39 -16
- package/src/directive/switch/switch.js +1 -0
- package/src/directive/switch/switch.spec.js +1 -1
- package/src/directive/transclude/transclude.js +87 -89
- package/src/injection-tokens.js +1 -1
- package/src/interface.ts +68 -19
- package/src/loader.js +4 -9
- package/src/public.js +9 -15
- package/src/router/common/glob.js +5 -0
- package/src/router/directives/state-directives.js +4 -6
- package/src/router/directives/state-directives.spec.js +1 -1
- package/src/router/directives/view-directive.js +9 -1
- package/src/router/globals.js +0 -1
- package/src/router/state/state-registry.js +0 -1
- package/src/router/state-filters.js +2 -2
- package/src/router/url/url-service.js +5 -9
- package/src/services/anchor-scroll.html +0 -7
- package/src/services/anchor-scroll.js +2 -2
- package/src/{core → services/exception}/exception-handler.js +2 -2
- package/src/{core/error-handler.ts → services/exception/interface.ts} +1 -1
- package/src/services/http/http.js +2 -13
- package/src/services/http/interface.ts +2 -2
- package/src/services/http-backend/http-backend.js +4 -14
- package/src/services/http-backend/http-backend.spec.js +1 -4
- package/src/services/location/interface.ts +8 -0
- package/src/{core → services}/location/location.html +4 -1
- package/src/{core → services}/location/location.js +129 -27
- package/src/{core → services}/location/location.spec.js +2 -2
- package/src/{core → services}/location/location.test.js +1 -1
- package/src/{core → services}/sce/sce.html +1 -1
- package/src/{core → services}/sce/sce.js +9 -3
- package/src/{core → services}/sce/sce.spec.js +2 -3
- package/src/{core → services}/sce/sce.test.js +1 -1
- package/src/services/template-cache/interface.ts +8 -2
- package/src/services/template-cache/template-cache.js +3 -1
- package/src/services/template-cache/template-cache.spec.js +72 -0
- package/src/services/template-request.js +2 -1
- package/src/shared/cache.js +0 -2
- package/src/shared/dom.js +10 -0
- package/src/shared/test-utils.js +1 -0
- package/src/shared/url-utils/interface.ts +56 -0
- package/src/{core → shared}/url-utils/url-utils.html +4 -1
- package/src/{core → shared}/url-utils/url-utils.js +26 -23
- package/src/{core → shared}/url-utils/url-utils.spec.js +0 -8
- package/src/{core → shared}/url-utils/url-utils.test.js +1 -1
- package/src/shared/utils.js +47 -1
- package/utils/express.js +9 -1
- package/@types/core/task-tracker-factory.d.ts +0 -76
- package/@types/services/browser.d.ts +0 -101
- package/docs/static/typedoc/types/SwapInsertPosition.html +0 -2
- package/jsdoc.json +0 -22
- package/src/core/task-tracker-factory.js +0 -145
- package/src/services/browser.js +0 -212
- /package/src/{core → services}/location/location.md +0 -0
- /package/src/{core → services}/sce/sce.md +0 -0
- /package/src/{core → shared}/url-utils/url-utils.md +0 -0
|
@@ -10,4 +10,16 @@
|
|
|
10
10
|
&::after {
|
|
11
11
|
background-color: white !important; // override dark overlay
|
|
12
12
|
}
|
|
13
|
+
|
|
14
|
+
#download {
|
|
15
|
+
display: flex;
|
|
16
|
+
flex-direction: row;
|
|
17
|
+
justify-content: center;
|
|
18
|
+
align-items: baseline;
|
|
19
|
+
|
|
20
|
+
#version {
|
|
21
|
+
font-weight: 600;
|
|
22
|
+
margin-right: 2rem;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
13
25
|
}
|
package/docs/content/_index.md
CHANGED
|
@@ -4,13 +4,24 @@ title: AngularTS
|
|
|
4
4
|
|
|
5
5
|
{{< blocks/cover color="white" height="full" >}}
|
|
6
6
|
|
|
7
|
-
<div class="text-center">
|
|
7
|
+
<div class="text-center" ng-app>
|
|
8
8
|
<h1 class="display-1 mt-0 mt-md-5 pb-4">Angular<span>TS</span></h1>
|
|
9
9
|
</div>
|
|
10
10
|
|
|
11
11
|
<p class="lead mb-5">A modern, reactive and typesafe evolution of the classic JS framework from Google©</p>
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
|
|
13
|
+
<div id="download">
|
|
14
|
+
<span id="version"></span>
|
|
15
|
+
<a class="btn btn-lg btn-secondary me-3 mb-4" href="https://github.com/Angular-Wave/angular.ts">
|
|
16
|
+
Download <i class="fab fa-github ms-2 "></i>
|
|
17
|
+
</a>
|
|
18
|
+
<script defer>
|
|
19
|
+
window.addEventListener("DOMContentLoaded", () => {
|
|
20
|
+
const versionSpan = document.getElementById("version");
|
|
21
|
+
const version = window.angular.version;
|
|
22
|
+
versionSpan.textContent = `Latest release: ${version}`;
|
|
23
|
+
});
|
|
24
|
+
</script>
|
|
25
|
+
</div>
|
|
15
26
|
|
|
16
27
|
{{< /blocks/cover >}}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: ng-bind
|
|
3
|
+
description: >
|
|
4
|
+
Sync or hydrate textContent of element with an expression
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
### Description
|
|
8
|
+
|
|
9
|
+
The `ng-bind` attribute places the text content of the specified HTML element
|
|
10
|
+
with the value of a given expression, and to update the text content when the
|
|
11
|
+
value of that expression changes.
|
|
12
|
+
|
|
13
|
+
Typically, you don't use `ng-bind` directly, but instead you use the double
|
|
14
|
+
curly markup like `{{ expression }}` which is similar but less verbose.
|
|
15
|
+
|
|
16
|
+
It is preferable to use `ng-bind` instead of `{{ expression }}` if a template is
|
|
17
|
+
momentarily displayed by the browser in its raw state before it is compiled.
|
|
18
|
+
Since `ng-bind` is an element attribute, it makes the bindings invisible to the
|
|
19
|
+
user while the page is loading.
|
|
20
|
+
|
|
21
|
+
An alternative solution to this problem would be using the `ng-cloak` directive.
|
|
22
|
+
|
|
23
|
+
`ng-bind` can be modified with a `data-lazy` data attribute (or shorthand `lazy`
|
|
24
|
+
attribute), which will delay update of element content until model is changed.
|
|
25
|
+
This is useful for rendering server-generated content, while keeping the UI
|
|
26
|
+
dynamic. In other frameworks, this technieque is known as
|
|
27
|
+
[hydration](<https://en.wikipedia.org/wiki/Hydration_(web_development)>).
|
|
28
|
+
|
|
29
|
+
### Directive parameters
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
#### `ng-bind`
|
|
34
|
+
|
|
35
|
+
- **Type:** [Expression](../../../typedoc/types/Expression.html)
|
|
36
|
+
- **Restrict:** `A`
|
|
37
|
+
- **Element:** ANY
|
|
38
|
+
- **Priority:** `0`
|
|
39
|
+
- **Description:** Expression to evaluate and modify
|
|
40
|
+
[textContent](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent)
|
|
41
|
+
property.
|
|
42
|
+
- **Example:**
|
|
43
|
+
|
|
44
|
+
```html
|
|
45
|
+
<div ng-bind="name"></div>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
### Directive modifiers
|
|
51
|
+
|
|
52
|
+
#### `data-lazy`
|
|
53
|
+
|
|
54
|
+
- **Type:** N/A
|
|
55
|
+
- **Description:** Apply expression once the bound model changes.
|
|
56
|
+
- **Example:**
|
|
57
|
+
|
|
58
|
+
```html
|
|
59
|
+
<div ng-bind="name" data-lazy></div>
|
|
60
|
+
<!-- or -->
|
|
61
|
+
<div ng-bind="name" lazy></div>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
### Demo
|
|
67
|
+
|
|
68
|
+
{{< showhtml src="examples/ng-bind/ng-bind.html" >}}
|
|
69
|
+
|
|
70
|
+
{{< showraw src="examples/ng-bind/ng-bind.html" >}}
|
|
71
|
+
|
|
72
|
+
---
|
|
@@ -16,6 +16,9 @@ is clicked.
|
|
|
16
16
|
#### `ng-click`
|
|
17
17
|
|
|
18
18
|
- **Type:** [Expression](../../../typedoc/types/Expression.html)
|
|
19
|
+
- **Restrict:** `A`
|
|
20
|
+
- **Element:** ANY
|
|
21
|
+
- **Priority:** `0`
|
|
19
22
|
- **Description:** Expression to evaluate upon
|
|
20
23
|
[click](https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event)
|
|
21
24
|
event.
|
|
@@ -16,6 +16,9 @@ element is double clicked.
|
|
|
16
16
|
#### `ng-dblclick`
|
|
17
17
|
|
|
18
18
|
- **Type:** [Expression](../../../typedoc/types/Expression.html)
|
|
19
|
+
- **Restrict:** `A`
|
|
20
|
+
- **Element:** ANY
|
|
21
|
+
- **Priority:** `0`
|
|
19
22
|
- **Description:** Expression to evaluate upon
|
|
20
23
|
[dblclick](https://developer.mozilla.org/en-US/docs/Web/API/Element/dblclick_event)
|
|
21
24
|
event.
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: ng-get
|
|
3
|
+
description: >
|
|
4
|
+
Initiates a GET request
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
### Description
|
|
8
|
+
|
|
9
|
+
The `ng-get` directive allows you to fetch content via `$http` service from a
|
|
10
|
+
remote URL and insert, replace, or manipulate it into the DOM. In case of server
|
|
11
|
+
error, the directive displays the error in place of success result. This
|
|
12
|
+
behavior can be modified with error parameters below.
|
|
13
|
+
|
|
14
|
+
### Directive parameters
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
#### `ng-get`
|
|
19
|
+
|
|
20
|
+
- **Type:** `string`
|
|
21
|
+
- **Description:** A URL to issue a GET request to
|
|
22
|
+
- **Example:**
|
|
23
|
+
|
|
24
|
+
```html
|
|
25
|
+
<div ng-get="/example">get</div>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
### Directive parameters
|
|
31
|
+
|
|
32
|
+
#### `data-trigger`
|
|
33
|
+
|
|
34
|
+
- **Type:** `string`
|
|
35
|
+
- **Description:** Specifies the DOM event for triggering a request (default is
|
|
36
|
+
`click`). For a complete list, see
|
|
37
|
+
[UI Events](https://developer.mozilla.org/en-US/docs/Web/API/UI_Events)
|
|
38
|
+
- **Example:**
|
|
39
|
+
|
|
40
|
+
```html
|
|
41
|
+
<div ng-get="/example" trigger="mouseover">Get</div>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
#### `data-latch`
|
|
47
|
+
|
|
48
|
+
- **Type:** `string`
|
|
49
|
+
- **Description:** Triggers a request whenever its value changes. Can Cn be used
|
|
50
|
+
with interpolation (e.g., {{ expression }}) to observe reactive changes in the
|
|
51
|
+
scope.
|
|
52
|
+
- **Example:**
|
|
53
|
+
|
|
54
|
+
```html
|
|
55
|
+
<div ng-get="/example" latch="{{ latch }}" ng-mouseover="latch = !latch">
|
|
56
|
+
Get
|
|
57
|
+
</div>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
#### `data-swap`
|
|
63
|
+
|
|
64
|
+
- **Type:** [SwapMode](../../../typedoc/variables/SwapMode.html)
|
|
65
|
+
- **Description:** Controls how the response is inserted
|
|
66
|
+
- **Example:**
|
|
67
|
+
|
|
68
|
+
```html
|
|
69
|
+
<div ng-get="/example" swap="outerHTML">Get</div>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
#### `data-target`
|
|
75
|
+
|
|
76
|
+
- **Type:**
|
|
77
|
+
[selectors](https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector#selectors)
|
|
78
|
+
- **Description:** Specifies a DOM element where the response should be rendered
|
|
79
|
+
- **Example:**
|
|
80
|
+
|
|
81
|
+
```html
|
|
82
|
+
<div ng-get="/example" target=".test">Get</div>
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
#### `data-delay`
|
|
88
|
+
|
|
89
|
+
- **Type:**
|
|
90
|
+
[delay](https://developer.mozilla.org/en-US/docs/Web/API/Window/setTimeout#delay)
|
|
91
|
+
- **Description:** Delay request by N millisecond
|
|
92
|
+
- **Example:**
|
|
93
|
+
|
|
94
|
+
```html
|
|
95
|
+
<div ng-get="/example" delay="1000">Get</div>
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
#### `data-interval`
|
|
101
|
+
|
|
102
|
+
- **Type:**
|
|
103
|
+
[delay](https://developer.mozilla.org/en-US/docs/Web/API/Window/setInterval#delay)
|
|
104
|
+
- **Description:** Repeat request every N milliseconds
|
|
105
|
+
- **Example:**
|
|
106
|
+
|
|
107
|
+
```html
|
|
108
|
+
<div ng-get="/example" interval="1000">Get</div>
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
#### `data-throttle`
|
|
114
|
+
|
|
115
|
+
- **Type:**
|
|
116
|
+
[delay](https://developer.mozilla.org/en-US/docs/Web/API/Window/setTimeout#delay)
|
|
117
|
+
- **Description:** Ignores subsequent requests for N millisecond
|
|
118
|
+
- **Example:**
|
|
119
|
+
|
|
120
|
+
```html
|
|
121
|
+
<div ng-get="/example" throttle="1000">Get</div>
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
#### `data-loading`
|
|
127
|
+
|
|
128
|
+
- **Type:** N/A
|
|
129
|
+
- **Description:** Adds a data-loading="true/false" flag during request
|
|
130
|
+
lifecycle.
|
|
131
|
+
- **Example:**
|
|
132
|
+
|
|
133
|
+
```html
|
|
134
|
+
<div ng-get="/example" data-loading>Get</div>
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
#### `data-loading-class`
|
|
140
|
+
|
|
141
|
+
- **Type:** `string`
|
|
142
|
+
- **Description:** Toggles the specified class on the element while loading.
|
|
143
|
+
- **Example:**
|
|
144
|
+
|
|
145
|
+
```html
|
|
146
|
+
<div ng-get="/example" data-loading-class="red">Get</div>
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
#### `data-success`
|
|
152
|
+
|
|
153
|
+
- **Type:** [Expression](../../../typedoc/types/Expression.html)
|
|
154
|
+
- **Description:** Evaluates expression when request succeeds. Response data is
|
|
155
|
+
available as a `$res` property on the scope.
|
|
156
|
+
- **Example:**
|
|
157
|
+
|
|
158
|
+
```html
|
|
159
|
+
<div ng-get="/example" success="message = $res">Get {{ message }}</div>
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
#### `data-error`
|
|
165
|
+
|
|
166
|
+
- **Type:** [Expression](../../../typedoc/types/Expression.html)
|
|
167
|
+
- **Description:** Evaluates expression when request fails. Response data is
|
|
168
|
+
available as a `$res` property on the scope.
|
|
169
|
+
- **Example:**
|
|
170
|
+
|
|
171
|
+
```html
|
|
172
|
+
<div ng-get="/example" error="errormessage = $res">
|
|
173
|
+
Get {{ errormessage }}
|
|
174
|
+
</div>
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
#### `data-success-state`
|
|
180
|
+
|
|
181
|
+
- **Type:** `string`
|
|
182
|
+
- **Description:** Name of the state to nagitate to when request succeeds
|
|
183
|
+
- **Example:**
|
|
184
|
+
|
|
185
|
+
```html
|
|
186
|
+
<ng-view></ng-view>
|
|
187
|
+
<div ng-get="/example" success-state="account">Get</div>
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
#### `data-success-error`
|
|
193
|
+
|
|
194
|
+
- **Type:** `string`
|
|
195
|
+
- **Description:** Name of the state to nagitate to when request fails
|
|
196
|
+
- **Example:**
|
|
197
|
+
|
|
198
|
+
```html
|
|
199
|
+
<ng-view></ng-view>
|
|
200
|
+
<div ng-get="/example" error-state="login">Get</div>
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
---
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: ng-keydown
|
|
3
|
+
description: >
|
|
4
|
+
Handler for keydown event
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
### Description
|
|
8
|
+
|
|
9
|
+
The `ng-keydown` directive allows you to specify custom behavior when pressing
|
|
10
|
+
keys, regardless of whether they produce a character value.
|
|
11
|
+
|
|
12
|
+
### Directive parameters
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
#### `ng-keydown`
|
|
17
|
+
|
|
18
|
+
- **Type:** [Expression](../../../typedoc/types/Expression.html)
|
|
19
|
+
- **Description:** Expression to evaluate upon
|
|
20
|
+
[keydown](https://developer.mozilla.org/en-US/docs/Web/API/Element/keydown_event)
|
|
21
|
+
event.
|
|
22
|
+
[KeyboardEvent](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent)
|
|
23
|
+
object is available as `$event`.
|
|
24
|
+
- **Example:**
|
|
25
|
+
|
|
26
|
+
```html
|
|
27
|
+
<div ng-keydown="$ctrl.greet($event)"></div>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
#### Demo
|
|
33
|
+
|
|
34
|
+
{{< showhtml src="examples/ng-keydown/ng-keydown.html" >}}
|
|
35
|
+
|
|
36
|
+
{{< showraw src="examples/ng-keydown/ng-keydown.html" >}}
|
|
37
|
+
|
|
38
|
+
---
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: ng-keyup
|
|
3
|
+
description: >
|
|
4
|
+
Handler for keyup event
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
### Description
|
|
8
|
+
|
|
9
|
+
The `ng-keyup` directive allows you to specify custom behavior when releasing
|
|
10
|
+
keys, regardless of whether they produce a character value.
|
|
11
|
+
|
|
12
|
+
### Directive parameters
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
#### `ng-keyup`
|
|
17
|
+
|
|
18
|
+
- **Type:** [Expression](../../../typedoc/types/Expression.html)
|
|
19
|
+
- **Description:** Expression to evaluate upon
|
|
20
|
+
[keyup](https://developer.mozilla.org/en-US/docs/Web/API/Element/keyup_event)
|
|
21
|
+
event.
|
|
22
|
+
[KeyboardEvent](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent)
|
|
23
|
+
object is available as `$event`.
|
|
24
|
+
- **Example:**
|
|
25
|
+
|
|
26
|
+
```html
|
|
27
|
+
<div ng-keyup="$ctrl.greet($event)"></div>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
#### Demo
|
|
33
|
+
|
|
34
|
+
{{< showhtml src="examples/ng-keyup/ng-keyup.html" >}}
|
|
35
|
+
|
|
36
|
+
{{< showraw src="examples/ng-keyup/ng-keyup.html" >}}
|
|
37
|
+
|
|
38
|
+
---
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: ng-load
|
|
3
|
+
description: >
|
|
4
|
+
Handler for load event
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
### Description
|
|
8
|
+
|
|
9
|
+
The `ng-load` directive allows you to specify custom behavior for elements that
|
|
10
|
+
trigger
|
|
11
|
+
[load](https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event)
|
|
12
|
+
event.
|
|
13
|
+
|
|
14
|
+
**Note**: there is no guarantee that the browser will bind `ng-load` directive
|
|
15
|
+
before loading its resource. Demo below is using a large image to showcase
|
|
16
|
+
itself.
|
|
17
|
+
|
|
18
|
+
### Directive parameters
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
#### `ng-load`
|
|
23
|
+
|
|
24
|
+
- **Type:** [Expression](../../../typedoc/types/Expression.html)
|
|
25
|
+
- **Description:** Expression to evaluate upon
|
|
26
|
+
[load](https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event)
|
|
27
|
+
event. [Event](https://developer.mozilla.org/en-US/docs/Web/API/Event) object
|
|
28
|
+
is available as `$event`.
|
|
29
|
+
- **Example:**
|
|
30
|
+
|
|
31
|
+
```html
|
|
32
|
+
<img src="url" ng-load="$ctrl.load($event)"></div>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
#### Demo
|
|
38
|
+
|
|
39
|
+
{{< showhtml src="examples/ng-load/ng-load.html" >}}
|
|
40
|
+
|
|
41
|
+
{{< showraw src="examples/ng-load/ng-load.html" >}}
|
|
42
|
+
|
|
43
|
+
---
|
|
@@ -6,10 +6,75 @@ description: >
|
|
|
6
6
|
|
|
7
7
|
### Description
|
|
8
8
|
|
|
9
|
-
Initializes cache
|
|
9
|
+
Initializes cache instance for `$templateCache` service as an empty
|
|
10
10
|
[Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map)
|
|
11
11
|
object.
|
|
12
12
|
|
|
13
|
+
An alternative caching implementation can be provided by implementing
|
|
14
|
+
[TemplateCache](../../../typedoc/types/TemplateCache.html) interface for web
|
|
15
|
+
standard storage options like `localStorage`, `sessionStorage`, `IndexedDB`, or
|
|
16
|
+
`Cache API`. You can also use third-party storage engines like
|
|
17
|
+
[pouch](https://github.com/pouchdb/pouchdb) or
|
|
18
|
+
[SQLite](https://github.com/sqlitebrowser/sqlitebrowser). With WebAssembly
|
|
19
|
+
(WASM), even more powerful and flexible storage backends become possible.
|
|
20
|
+
|
|
21
|
+
Below is an example implementation using `localStorage`:
|
|
22
|
+
|
|
23
|
+
```js
|
|
24
|
+
class LocalStorageMap {
|
|
25
|
+
constructor(prefix = '') {
|
|
26
|
+
this.prefix = prefix;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
_key(key) {
|
|
30
|
+
return `${this.prefix}${key}`;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
get(key) {
|
|
34
|
+
const raw = localStorage.getItem(this._key(key));
|
|
35
|
+
if (raw === null) return undefined;
|
|
36
|
+
try {
|
|
37
|
+
return JSON.parse(raw);
|
|
38
|
+
} catch {
|
|
39
|
+
return raw;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
set(key, value) {
|
|
44
|
+
localStorage.setItem(this._key(key), value);
|
|
45
|
+
return this;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
has(key) {
|
|
49
|
+
return localStorage.getItem(this._key(key)) !== null;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
delete(key) {
|
|
53
|
+
localStorage.removeItem(this._key(key));
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
clear() {
|
|
58
|
+
const toRemove = [];
|
|
59
|
+
for (let i = 0; i < localStorage.length; i++) {
|
|
60
|
+
const k = localStorage.key(i);
|
|
61
|
+
if (k && k.startsWith(this.prefix)) {
|
|
62
|
+
toRemove.push(k);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
toRemove.forEach((k) => localStorage.removeItem(k));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Override during configuration phase:
|
|
71
|
+
|
|
72
|
+
```js
|
|
73
|
+
angular.module('demo', []).config(($templateCacheProvider) => {
|
|
74
|
+
templateCacheProvider.cache = new LocalStorageMap();
|
|
75
|
+
});
|
|
76
|
+
```
|
|
77
|
+
|
|
13
78
|
### Properties
|
|
14
79
|
|
|
15
80
|
---
|
|
@@ -9,8 +9,8 @@ description: >
|
|
|
9
9
|
object created by `$templateCacheProvider`.
|
|
10
10
|
|
|
11
11
|
The first time a template is used, it is loaded in the template cache for quick
|
|
12
|
-
retrieval. You can load templates directly into the cache in a script tag
|
|
13
|
-
using $templateRequest
|
|
12
|
+
retrieval. You can load templates directly into the cache in a script tag by
|
|
13
|
+
using $templateRequest or by consuming the $templateCache service directly.
|
|
14
14
|
|
|
15
15
|
Adding via the script tag:
|
|
16
16
|
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<section ng-app>
|
|
2
|
+
<!-- Eager bind -->
|
|
3
|
+
<label>Enter name: <input type="text" ng-model="name" /></label><br />
|
|
4
|
+
Hello <span ng-bind="name">I am never displayed</span>!
|
|
5
|
+
|
|
6
|
+
<!-- Lazy bind with short-hand `lazy` -->
|
|
7
|
+
<button ng-click="name1 = name">Sync</button>
|
|
8
|
+
<span ng-bind="name1" lazy>I am server content</span>!
|
|
9
|
+
</section>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<section ng-app>
|
|
2
|
+
<img
|
|
3
|
+
ng-load="res = 'Large image loaded'"
|
|
4
|
+
width="150px"
|
|
5
|
+
src="https://upload.wikimedia.org/wikipedia/commons/thumb/9/93/Centroamerica_prehispanica_siglo_XVI.svg/1920px-Centroamerica_prehispanica_siglo_XVI.svg.png"
|
|
6
|
+
/>
|
|
7
|
+
{{ res }}
|
|
8
|
+
</section>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
window.hierarchyData = "
|
|
1
|
+
window.hierarchyData = "eJyVjrEOwiAQht/lZqppmzp01cHR6Gg6EDgskYLC4dL03QUHY2IT7fQn/913943gnaMA7bmu6o6BR2VQkHY2dSOkMoflA0ILe6LbwbuHluh3qHg0iWRw1VZCWzUbBtGbtKctoVdcYFjPIaueBpM4YXhIX4CCLPKN4s3lYa+N9GizWd10E4MUHy5HvEcMdOqdJxFp66zSlx8ys8xim6Z82TTlt80Si7+/T9P0BAQ3j50="
|
|
@@ -1 +1 @@
|
|
|
1
|
-
window.navigationData = "
|
|
1
|
+
window.navigationData = "eJyVl8tu2zAQRf9F66BpXKSP7FInbgqktVF5V3RBS2ObCU2q5MhNUPTfS8V6UXxmZ/BeHg5nyKH882+G8ITZVXYvdispjrQEmZ1lFcG9HiwYUQrU+Uh8s8cD045Hysvs6mL28d9Zz/i++ybKmoEN6JTQ7FW9yeuNPfc0Hp/pD9/UQ6Q1HCpGEOak2IMf6LSFuPM94TtQy80DFDjwKEeQW1JopOEwUbPL92OUOFSCA8dlhVRw5aZNTGEgRykYG2/UQHVyCHJDpY6bHsHJ6NUkxErCSih3mqamEPAOsboDokujvgCiZ3+WK4bs6n0DW1IzdBfAZYyBf8DvGhTqhG/prg3JC3eZExdYS8LVVshDICO2NQ5X+sgp9wEYG1JBaWFa3hg+B3mkhT/MVg9hdDsMUQY5BHlpicAit89yJSBDjcG0hGB29xth3D3PBBgn1EkxHAmofC8kFnUC0nSG0G2lgrudeEI442VwwgxHENWc6YLVJSxqXjT1CjwfPnNogWvOBepIyr6pLkiBQj4PK+BzpeFe44T+9tOHi8uZa4UYOJE3Z/pRu0bUqeu2OUU6LFFqf7n0L4WybmKxuC5TjNznq3mPKYOFFa7teAXT7hwW1NM2/FRPpV5b+ak/sPPekcy8p/wxADzJMdrtU0V4KXK9NkxRYy2BI0Epx1EclBhjQZm+yZ7UG2IiyYqlG4/Nb79bDlRZSRlJKZTuac71Ba+VC2Y6YsyvvOlnZMOswAYlneHJtWWIEfVbPyeMTTntcMLs9m3xxGMZYsQl9/zVOPEmcoyW/yFV872w1pOnqLEW46z9vWqd3qNuj/oPzefxWToSSZti6bvWaibjnWszrumdZk3/9R8p2DA0"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
window.searchData = "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";
|
|
1
|
+
window.searchData = "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";
|