如果没有<div ng-view =“”> </div>,角度默认值不适用

时间:2014-12-29 20:23:21

标签: angularjs ruby-on-rails-4 turbolinks

我正在使用带有Angular和Turbolinks的Rails 4。我正在为我的rails应用程序构建一个在线商店。基本上我只希望Angular应用程序“活着”。在我的一个控制器的特定动作中(即存储动作)。我实际上有这个工作。基本上我所做的是调用动作并让它呈现一个具有如下内容的特定视图:

<div ng-view>
</div>

这允许我使用Angular的路由提供程序根据我的$ location呈现路径(在商店内)。这很好,很好。我可以使用路线提供商在我的商店子应用程序内导航到我的内容。我的问题是,一旦我通过Angular视图渲染,我似乎被判入狱了#39;通过Angular。例如,如果我点击页面顶部导航栏上的某个链接(链接到rails路径和操作)之外的链接,则URL中的位置会发生变化,但实际上并未采取操作(我验证了这一点)通过检查WEBRick日志)。想到的唯一一件事就是做一些hacky,例如重新定位到$ location的位置,否则&#39;在路线提供者的条件(我没有试过这个,看起来好像是糟糕的设计)。所以,我的问题是这个;一旦我在Angular中使用routeprovider是否有适当的方法来逃避它?

1 个答案:

答案 0 :(得分:0)

ptd的帖子提供了我正在寻找的答案。基本上我所做的就是禁用点击.run来获取$ root元素:

.run(['$rootScope','ngApp','$rootElement', function($rootScope, ngApp, $rootElement) {
    $rootElement.off('click');
 }])

然后,使用ng-click手动更改位置:

<a ng-click="goToLocation()" href="">Go to Loc</a>

在应用程序中:

$scope.goToCart = function() {
   $location.path('/someloc')
}