aboutsummaryrefslogtreecommitdiffstats
path: root/src/directives.js
diff options
context:
space:
mode:
authorMisko Hevery2010-03-31 13:57:25 -0700
committerMisko Hevery2010-03-31 13:57:25 -0700
commit35a91085004e31f786df1e0011bc26ed0142ab4d (patch)
tree030289973e8ae5a88e86fc77d878dde40b72ddc5 /src/directives.js
parentb5b8f63e1ebc75d09c6faf8dbad6497880deed47 (diff)
downloadangular.js-35a91085004e31f786df1e0011bc26ed0142ab4d.tar.bz2
all tests green, some dissabled
Diffstat (limited to 'src/directives.js')
-rw-r--r--src/directives.js29
1 files changed, 17 insertions, 12 deletions
diff --git a/src/directives.js b/src/directives.js
index 291bea11..de68360e 100644
--- a/src/directives.js
+++ b/src/directives.js
@@ -15,7 +15,7 @@ angularDirective("ng-bind", function(expression){
return function(element) {
var lastValue;
this.$onEval(function() {
- var value = templateFn.call(this);
+ var value = templateFn.call(this, element);
if (value != lastValue) {
element.text(value);
lastValue = value;
@@ -31,16 +31,20 @@ function compileBindTemplate(template){
var bindings = [];
foreach(parseBindings(template), function(text){
var exp = binding(text);
- bindings.push(exp ? function(){
- return this.$eval(exp);
- } : function(){
+ bindings.push(exp ? function(element){
+ var error, value = this.$tryEval(exp, function(e){
+ error = toJson(e);
+ });
+ elementError(element, NG_EXCEPTION, error);
+ return error ? error : value;
+ } : function() {
return text;
});
});
- bindTemplateCache[template] = fn = function(){
+ bindTemplateCache[template] = fn = function(element){
var parts = [], self = this;
foreach(bindings, function(fn){
- var value = fn.call(self);
+ var value = fn.call(self, element);
if (isObject(value)) value = toJson(value, true);
parts.push(value);
});
@@ -54,7 +58,7 @@ angularDirective("ng-bind-template", function(expression){
return function(element) {
var lastValue;
this.$onEval(function() {
- var value = templateFn.call(this);
+ var value = templateFn.call(this, element);
if (value != lastValue) {
element.text(value);
lastValue = value;
@@ -67,7 +71,7 @@ angularDirective("ng-bind-attr", function(expression){
return function(element){
this.$onEval(function(){
foreach(this.$eval(expression), function(bindExp, key) {
- var value = compileBindTemplate(bindExp).call(this);
+ var value = compileBindTemplate(bindExp).call(this, element);
if (key == 'disabled' && !toBoolean(value)) {
element.removeAttr('disabled');
} else {
@@ -135,12 +139,13 @@ angularWidget("@ng-repeat", function(expression, element){
};
});
-angularDirective("ng-action", function(expression, element){
+angularDirective("ng-click", function(expression, element){
return function(element){
var self = this;
element.click(function(){
self.$tryEval(expression, element);
self.$eval();
+ return false;
});
};
});
@@ -167,7 +172,7 @@ function ngClass(selector) {
var value = this.$eval(expression);
if (selector(this.$index)) {
if (isArray(value)) value = value.join(' ');
- element[0].className = (existing + value).replace(/\s\s+/g, ' ');
+ element[0].className = trim(existing + value);
}
}, element);
};
@@ -175,8 +180,8 @@ function ngClass(selector) {
}
angularDirective("ng-class", ngClass(function(){return true;}));
-angularDirective("ng-class-odd", ngClass(function(i){return i % 2 == 1;}));
-angularDirective("ng-class-even", ngClass(function(i){return i % 2 == 0;}));
+angularDirective("ng-class-odd", ngClass(function(i){return i % 2 == 0;}));
+angularDirective("ng-class-even", ngClass(function(i){return i % 2 == 1;}));
angularDirective("ng-show", function(expression, element){
return function(element){