我刚刚开始使用 angularJS 并努力为我正在尝试做的事情找出合适的架构。我有一个单页应用程序,但URL 应始终保持不变;我不希望用户能够导航到根目录之外的任何路由。在我的应用程序中,有一个主 div 需要托管不同的视图。当访问新视图时,我希望它接管主 div 中的显示。以这种方式加载的视图可以丢弃或保留在 DOM 中隐藏 - 我有兴趣了解每个视图如何工作。
我想出了一个粗略的工作示例来说明我正在尝试做的事情。 请参阅此 Plunk 中的工作示例。 基本上,我想将 HTML 动态加载到 DOM 中,并使标准的 angularJS 控制器能够连接到新的 HTML。有没有比使用我这里的自定义指令并使用 $compile() 连接到 angular 更好/更简单的方法?也许有类似路由器的东西,但不需要更改 URL 即可运行?
这是我目前使用的特殊指令(取自另一个 SO 帖子):
// Stolen from: http://stackoverflow.com/questions/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);
});
}
};
});
谢谢,
安迪