【问题标题】:Angular default not applying without <div ng-view>没有 <div ng-view> Angular 默认不适用
【发布时间】:2015-02-26 00:42:36
【问题描述】:

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

<div ng-view>
</div>

这允许我使用 Angular 的路由提供程序来根据我的 $location 呈现一个路由(在商店内)。这很好用。我可以使用路线提供程序在我的商店子应用程序中导航到我的心内容。我的问题是,一旦我通过 Angular 视图进行渲染,我似乎就被 Angular “监禁”了。例如,如果我单击页面顶部导航栏上的 ie 之外的链接(链接到 rails 路由和操作),则 URL 中的位置会更改,但实际上没有执行操作(我验证了这一点通过检查 WEBRick 日志)。唯一想到的是做一些 hacky 的事情,比如在路由提供程序中为“否则”条件重定向到 $location(我没有尝试过,无论如何这似乎都是糟糕的设计)。所以,我的问题是这样的;一旦我在 Angular 中使用 routeprovider,是否有合适的方法来逃避它?

【问题讨论】:

  • stackoverflow.com/questions/20980201/… - 这个问题和答案应该是你要找的。​​span>
  • 感谢您的回复。到目前为止,我已经尝试过 _self,它可以工作,但它不适用于 turbolinks(它会导致整个页面重新加载)。我将继续尝试此页面上的其他选项。

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


【解决方案1】:

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

.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')
}

【讨论】:

    猜你喜欢
    • 2014-09-29
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-02
    • 1970-01-01
    相关资源
    最近更新 更多