Próbuję zintegrować piękną edytor WYSIWYG (http://imperavi.com/redactor/) w niestandardowej dyrektywie AngularJS.Integracja Redactor WYSIWYG w dyrektywie AngularJs
visualy to działa, ale moja dyrektywa zwyczaj nie jest kompatybilny z NG-modelu (i nie rozumiem dlaczego)
W ten sposób można korzystać z dyrektywy:
<wysiwyg ng-model="edited.comment" id="contactEditCom" content="{{content}}" required></wysiwyg>
I jest to kod dyrektywa:
var myApp = angular.module('myApp', []);
myApp.directive("wysiwyg", function(){
var linkFn = function(scope, el, attr, ngModel) {
scope.redactor = null;
scope.$watch('content', function(val) {
if (val !== "")
{
scope.redactor = $("#" + attr.id).redactor({
focus : false,
callback: function(o) {
o.setCode(val);
$("#" + attr.id).keydown(function(){
scope.$apply(read);
});
}
});
}
});
function read() {
var content = scope.redactor.getCode();
console.log(content);
if (ngModel.viewValue != content)
{
ngModel.$setViewValue(content);
console.log(ngModel);
}
}
};
return {
require: 'ngModel',
link: linkFn,
restrict: 'E',
scope: {
content: '@'
},
transclude: true
};
});
I wreszcie jest to skrzypce ->http://fiddle.jshell.net/MyBoon/STLW5/
W read(), ngModel.viewValue powinny być ngModel $ viewValue.. Co rozumiesz przez "moja dyrektywa nie jest zgodna z modelem ng"? –
Chcę tylko, aby moja dyrektywa niestandardowa działała jak inne wejścia. Na przykład, gdy to napiszesz: zmienna zasięgu "edited.input" zostanie wypełniona, jeśli tekst jest wpisany. Staram się zachować takie samo zachowanie w mojej dyrektywie. – MyBoon