Skip to content
This repository was archived by the owner on Feb 22, 2018. It is now read-only.

Commit fb47ab1

Browse files
committed
feat: add ng-click directive
1 parent 1f1afd0 commit fb47ab1

File tree

3 files changed

+49
-0
lines changed

3 files changed

+49
-0
lines changed

lib/angular.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ part 'block_type.dart';
1313
part 'compiler.dart';
1414
part 'directive.dart';
1515
part 'directives/ng_bind.dart';
16+
part 'directives/ng_click.dart';
1617
part 'directives/ng_controller.dart';
1718
part 'directives/ng_mustache.dart';
1819
part 'directives/ng_repeat.dart';
@@ -124,5 +125,6 @@ angularModule(AngularModule module) {
124125

125126
module.directive(NgBindAttrDirective);
126127
module.directive(NgRepeatAttrDirective);
128+
module.directive(NgClickAttrDirective);
127129
module.directive(NgControllerAttrDirective);
128130
}

lib/directives/ng_click.dart

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
part of angular;
2+
3+
4+
class NgClickAttrDirective {
5+
String expression;
6+
dom.Node node;
7+
8+
9+
NgClickAttrDirective(dom.Node this.node, DirectiveValue directiveValue) {
10+
expression = directiveValue.value;
11+
}
12+
13+
attach(Scope scope) {
14+
node.onClick.listen((event) => scope.$apply(expression));
15+
}
16+
}

test/directives/ng_click_spec.dart

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import '../_specs.dart';
2+
import 'dart:html' as dom;
3+
4+
5+
main() {
6+
beforeEach(module(angularModule));
7+
8+
describe('NgClick', () {
9+
var compile, element, rootScope;
10+
11+
triggerEvent(elementWrapper, name) {
12+
elementWrapper[0].dispatchEvent(new dom.Event.eventType('MouseEvent', name));
13+
}
14+
15+
beforeEach(inject((Scope scope, Compiler compiler) {
16+
compile = (html, [applyFn]) {
17+
element = $(html);
18+
rootScope = scope;
19+
compiler(element)(element).attach(scope);
20+
scope.$apply(applyFn);
21+
};
22+
}));
23+
24+
25+
it('should evaluate the expression on click', () {
26+
compile('<button ng-click="abc = true"></button>');
27+
triggerEvent(element, 'click');
28+
expect(rootScope['abc']).toEqual(true);
29+
});
30+
});
31+
}

0 commit comments

Comments
 (0)