Я знаю, что обычно это не тот способ использования AngularJS, но мне было интересно, можно ли добиться того, чего я хочу, с помощью AngularJS. Если это не рекомендуемый способ, не могли бы вы дать подсказки о том, как этого добиться? Пожалуйста, учтите, что я новичок в области веб-программирования.
Итак, в моем проекте я рисую с помощью SVG и RaphaelJS несколько виджетов на холсте, который помещается в div «держатель». Я пытаюсь связать эти виджеты с данными с помощью AngularJS, в основном каждый виджет связан с объектом в CustomController. Как я могу получить доступ к CustomController при инициализации своих виджетов?
<html lang="en" style="height: 100%;" ng-app="myApp">
<head>
<script type="text/javascript"">
$(document).ready(function () {
var canvas = Raphael('holder', '800', '600');
var widget1 = new Widget1(params);
// initialize widgets here, that I need to bind to data using AngularJS
// I am not able to access the CustomController here when drawing my widgets
});
</script>
</head>
<body>
<div id="holder" ng-controller="CustomController">
</div>
</body>
</html>
Это в любом случае для привязки данных к виджетам SVG с использованием AngularJS? Я начинаю думать, что это не цель AngularJS... в этом случае не могли бы вы посоветовать мне, как это сделать?
ОБНОВЛЕНИЕ:
Ребята, большое спасибо за ваши ответы! Требование состоит в том, чтобы виджет принимал пользовательский ввод, и я не хочу, чтобы он помещался в html-файл (в целях модульности). Таким образом, директива кажется основным выбором на данный момент. В методе ссылки я бы рисовал виджет с помощью RaphaelJS, и я также могу рисовать редактируемые объекты, но таким образом я бы не использовал должным образом механизм привязки AngularJS, это были бы просто часы и обработчики событий... что кажется мне грязным.Было бы неплохо, если бы я мог каким-то образом поместить теги SVG в свойство шаблона директивы и выполнить ожидание в шаблоне, но, похоже, это не поддерживается.
У вас есть другие идеи на этот счет?
Кстати, есть ли способ программно применить привязки между свойством и элементом HTML (например, текстовым полем), полученным с помощью jQuery?
С уважением