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