Angular playground
HTML
<script src="http://code.angularjs.org/1.2.14/angular.js"></script>
<div ng-controller="MainCtrl">
<input type="text" ng-model="func" />
<ul>
<li ng-repeat="msg in messages">{{msg}}</li>
</ul>
{{test}}
</div>
JavaScript
var module = angular.module("myApp", []);
module.config(function ($provide) {
// decorate - wrap $parse to understand jQuery text() getter/setter
$provide.decorator('$parse', function($delegate) {
return function(expression) {
var parsed = $delegate(expression);
// getter
wrapper = function(scope, locals) {
var val = parsed(scope, locals);
return angular.isFunction(val) && val.getset
? val.call(scope)
: val;
};
// setter
wrapper.assign = function(scope, value) {
var val = parsed(scope);
if (angular.isFunction(val) && val.getset)
val.call(scope, value);
else if (parsed.assign)
parsed.assign(scope, value);
};
return wrapper;
};
});
});
module.controller("MainCtrl", function($scope) {
$scope.messages = ["Init","THING"];
$scope.test = "foo";
$scope.func = function (val) {
if (val != null)
$scope.test = val;
else
return $scope.test;
};
$scope.func.getset=true;
});