这是一个例子:
http://plnkr.co/edit/ezTUdoDKhCUGX3848VLp
HTML:
<p>Hello {{data | json}}!</p>
<div>
<textarea myconverter ng-model="data"></textarea>
</div>
JavaScript:
var app = angular.module('plunker', ['ngResource']);
app.controller('MainCtrl', function($scope, $resource) {
$scope.data = $resource('some-data.json').get({});
})
.directive('myconverter', function() {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, element, attr, ngModel) {
function fromJson(json) {
var out = JSON.stringify(json, null, 2);
return out;
}
function toJson(text) {
return JSON.parse(text);
}
ngModel.$parsers.push(toJson);
ngModel.$formatters.push(fromJson);
}
};
})
;
简单的 Hello 部分工作正常,当 AJAX 调用返回时,它会使用正确的数据进行更新。但是 textarea 永远不会更新。如果我设置了一个断点,它似乎被赋予了一个没有数据的对象(但我可以看到 $resource 方法)。如果我将 textarea 更改为指向“数据”对象的字段,它会按预期工作。