Angularjs 使用指令将内容添加到ng视图之外的区域
我正在尝试将现有的RubyonRails前端移植到Angular。到目前为止,我已经成功地获得了一个单页应用程序,它可以根据您的角度路线切换ng view的内容。这是伟大的,但是-在我的RoR布局中,我有几个定义的区域可以放置内容,所有这些都与主视图相关。例如:侧栏和标题 在RoR中,我可以在action视图中执行以下操作来设置侧边栏内容Angularjs 使用指令将内容添加到ng视图之外的区域,angularjs,Angularjs,我正在尝试将现有的RubyonRails前端移植到Angular。到目前为止,我已经成功地获得了一个单页应用程序,它可以根据您的角度路线切换ng view的内容。这是伟大的,但是-在我的RoR布局中,我有几个定义的区域可以放置内容,所有这些都与主视图相关。例如:侧栏和标题 在RoR中,我可以在action视图中执行以下操作来设置侧边栏内容 <p>Product page content</p> <% content_for :sidebar do %>
<p>Product page content</p>
<% content_for :sidebar do %>
<% render :partial => 'product_sidebar' %>
<% end %>
产品页面内容
'产品\侧边栏'%>
我正在努力确定实现这一目标的最佳方法。我用了两种方法:
<p>Main content for the view</p>
<sidebar>
Content for sidebar
</sidebar>
视图的主要内容
侧边栏的内容
元素之外有另一个元素:例如,
。由于您可以在中向sidebarContr
注入任意多个依赖项,因此可以使用$location
作为其参数之一,并检查其中的位置,并将属性添加到$scope
以使div显示您所需的内容
例如:
在控制器JS中:
(angular
.module('app.controllers', ['ng'])
.controller('sidebarContr', [
/******/ '$scope', '$location',
function ($scope, $location) {
if ($location.path() === '/') {
$scope.file = 'include_0.html';
else {
$scope.file = 'include_1.html';
}
}
])
);
在HTML中:
<div id="sidebar" ng-controller='sidebarContr'>
<div ng-include src='file'></div>
</div>
编辑:您提到的Angular UI路由器组件似乎正是您所需要的,它看起来更强大。但是,当你只需要简单的东西,不想再依赖一个的时候,我的解决方案是有用的。我还不认为自己是一个角度专家,但是在这个场景中,我见过很多使用NG的引用(需要/想要多个NG视图)。据我所知,未来还有一些工作需要支持。同样在最近的1.2视频中,他们提到了ng if,它显然添加/删除了dom元素,而不是像ng show/hide那样切换可见性,虽然我自己还没有尝试过,但这可能也会有帮助。我将对自定义指令进行表决。为什么不在要自定义的节上附加一个单独的控制器,并根据其
$scope
中的值呈现该节?@akonsu:对不起,您能稍微扩展一下该解决方案吗?@matthewrk我是说,您有您的
元素,您可以在ng视图之外有另一个元素:
,因为您可以在侧栏控件中插入任意数量的依赖项,您可以使用$location
作为其参数之一,并检查其中的位置,并将属性添加到$scope
以使div
显示所需的内容。在这里,我有一个网站将其用于导航栏:,控制器:啊,我明白了,对于一个小型应用程序来说,这是一个不错的解决方案,但是如果你有大量不同的侧栏模板,它可能会有点混乱,可能如果它像我在上面#1中所描述的那样从路由读取侧栏url,它会减少“断开连接”。不幸的是,我还不能投票,但谢谢你的帮助:)