Я только начинаю с angularJS и изо всех сил пытаюсь найти правильную архитектуру для того, что я пытаюсь сделать. У меня есть одностраничное приложение, но URL всегда должен оставаться тем же; Я не хочу, чтобы пользователь мог перемещаться по любым маршрутам за пределами корня. В моем приложении есть один главный div, который должен будет размещать разные виды. Когда открывается новый вид, я хочу, чтобы он взял дисплей в главном div. Представленные таким образом виды могут быть выбрасываться или скрываться как скрытые в DOM - мне интересно, как каждый может работать.
Я придумал примерный пример того, что я пытаюсь сделать. См. рабочий пример здесь в этом Plunk. В основном я хочу динамически загружать HTML в DOM и иметь стандартные контроллеры angularJS, чтобы подключаться к этому новому HTML. Есть ли лучший/более простой способ сделать это, чем использовать пользовательскую директиву, которую я здесь, и использовать $compile() для подключения до angular? Возможно, что-то вроде маршрутизатора, но не требует, чтобы URL-адреса имели изменения для работы?
Здесь специальная директива, которую я использую до сих пор (взята из другого сообщения SO):
// Stolen from: http://stackoverflow.com/info/18157305/angularjs-compiling-dynamic-html-strings-from-database
myApp.directive('dynamic', function ($compile) {
return {
replace: true,
link: function (scope, ele, attrs) {
scope.$watch(attrs.dynamic, function(html) {
if (!html) {
return;
}
ele.html((typeof(html) === 'string') ? html : html.data);
$compile(ele.contents())(scope);
});
}
};
});
Спасибо,
Andy