Altering Json Objects Load, Edit & Save (10.6)
http://angularjs.org/
10.6 example
HTML
<script type="text/javascript" src="http://docs-next.angularjs.org/angular-0.10.6.min.js" ng:autobind></script>
<div ng:controller="TestCtrl" ng:app>
<button ng:click="loadAnswers()">Load answers</button>
<button ng:click="addAnswer()">Add answer</button>
<p> </p>
<ul>
<li ng:repeat="answer in json_object_decoded.answers">
<input type="text" name="answer.text" ng:model="answer.text" />
<input type="radio" name="answer.correct" ng:model="answer.correct" ng:change="updateAnswers($index)" ng:format="boolean" ng:checked="{{answer.correct}}" />
</li>
</ul>
<p> </p>
<p>Result:
<span ng:bind="json_object_decoded"></span> </p>
<button ng:click="submit()">Save changes</button>
</div>
<br />
<br />
JavaScript
TestCtrl = function($route, $location) {
this.updateAnswers = function(idx) {
angular.forEach(this.json_object_decoded.answers, function(answer, i) {
answer.correct = idx === i;
});
};
this.$route = $route;
this.$location = $location;
this.json_object_decoded = {'answers':[]};
this.loadAnswers = function() {
// this is loaded from db normally
var fromServer = angular.toJson({
'answers': [{'text':'Answer 1','correct':false}, {'text':'Another Answer 2','correct':true}]
});
this.json_object_decoded = angular.fromJson(fromServer);
}
this.addAnswer = function() {
// if it is the first value - radio button must be checked
var correct = false;
if(this.json_object_decoded.answers.length == 0)
var correct = true;
this.json_object_decoded.answers.push({'text':'New','correct':correct});
}
this.submit = function() {
// 2DO: check if at least one value is true (maybe corrupted data from server?)
}
}