feat(scope): new and improved scope implementation

- Speed improvements (about 4x on flush phase)
- Memory improvements (uses no function closures)
- Break $eval into $apply, $dispatch, $flush
- Introduced $watch and $observe

Breaks angular.equals() use === instead of ==
Breaks angular.scope() does not take parent as first argument
Breaks scope.$watch() takes scope as first argument
Breaks scope.$set(), scope.$get are removed
Breaks scope.$config is removed
Breaks $route.onChange callback has not "this" bounded
This commit is contained in:
Misko Hevery
2011-03-23 09:33:29 -07:00
committed by Vojta Jina
parent 1f4b417184
commit 8f0dcbab80
60 changed files with 2539 additions and 1721 deletions

View File

@@ -63,7 +63,8 @@ describe('angular', function(){
it('should return true if same object', function(){
var o = {};
expect(equals(o, o)).toEqual(true);
expect(equals(1, '1')).toEqual(true);
expect(equals(o, {})).toEqual(true);
expect(equals(1, '1')).toEqual(false);
expect(equals(1, '2')).toEqual(false);
});
@@ -550,6 +551,7 @@ describe('angular', function(){
it('should link to existing node and create scope', function(){
template = angular.element('<div>{{greeting = "hello world"}}</div>');
scope = angular.compile(template)();
scope.$flush();
expect(template.text()).toEqual('hello world');
expect(scope.greeting).toEqual('hello world');
});
@@ -558,6 +560,7 @@ describe('angular', function(){
scope = angular.scope();
template = angular.element('<div>{{greeting = "hello world"}}</div>');
angular.compile(template)(scope);
scope.$flush();
expect(template.text()).toEqual('hello world');
expect(scope).toEqual(scope);
});
@@ -572,6 +575,7 @@ describe('angular', function(){
templateFn(scope, function(clone){
templateClone = clone;
});
scope.$flush();
expect(template.text()).toEqual('');
expect(scope.$element.text()).toEqual('hello world');
@@ -582,7 +586,7 @@ describe('angular', function(){
it('should link to cloned node and create scope', function(){
scope = angular.scope();
template = jqLite('<div>{{greeting = "hello world"}}</div>');
angular.compile(template)(scope, noop);
angular.compile(template)(scope, noop).$flush();
expect(template.text()).toEqual('');
expect(scope.$element.text()).toEqual('hello world');
expect(scope.greeting).toEqual('hello world');