使用两个前端“控制器” parasails错误(vue.js)航行js v1.1

时间:2019-03-04 22:35:03

标签: javascript vue.js sails.js

在上一个使用Sails版本(0.12)的项目中,我划分了layout.ejs文件,以独立于主体管理顶部栏和页脚。 看起来像

<%- partial('./partials/topnav.ejs') %>
<!-- begin::Body -->
<%- body %>
<!-- end:: Body -->
<%- partial('./partials/footer.ejs') %>

我正在使用AngularJS。顶杆包裹在控制器中,车身包裹在另一个控制器中。基本上在局部代码中,代码看起来像

<div ng-controller="topnavCtrl" ng-cloak>
    //My topnav code
</div>

...

 <div ng-controller="aPageCtrl" ng-cloak>
    //My page code
 </div>

我以为Sails js 1.1可以做类似的事情,从Web应用程序的选项1开始,但是因为它不是AngularJS,而是Vue.js和parasails,所以我不知道如何解决我得到的错误:

  

Whoops发生意外的客户端错误。无法加载页面   脚本(`topnav),因为已经在此页面上加载了页面脚本   页。请检查您浏览器的JavaScript控制台以获取更多信息   细节。此消息将不会在生产中显示。如果你是   不确定,请寻求帮助。 2019年3月4日星期一16:32:05 GMT-0500(EST)

浏览器控制台显示:

  

[错误]错误:由于页面脚本而无法加载页面脚本(`topnav)   已经在此页面上加载。 registerPage   (parasails.js:710:156)全局代码(topnav.page.js:1)

我的topnav部分有

<div id="topnav" v-cloak>
    //My topnav code
</div>

如果我从“正文”页面中删除了<div id="mypage" v-cloak>,则错误消失了。

显然,这与Parasails有关,但是有没有办法在Sails v1中为页面使用两个“控制器”? (我称它们为控制器,因为在使用AngularJS的Sails 0.12中它们被称为控制器,现在我根本不知道它们是什么!)

1 个答案:

答案 0 :(得分:0)

您应该能够在Sails V1中做到这一点。

最初使用的内容仍然可以使用:

<%- partial('./partials/topnav.ejs') %>
<!-- begin::Body -->
<%- body %>
<!-- end:: Body -->
<%- partial('./partials/footer.ejs') %>

尽管建议您将文件命名为footer.partial.ejs

您的局部不需要包装在控制器中,您可以根据需要随意基于类或id对其进行调用。

在您的部分.ejs文件中,您也不想在其上带有“ v-clock”,因为该文件应该已经存在于您的单独.ejs文件中。

所以:

<div id="topNav">
 //top nav code
</div>

<div id="homepage" v-clock>
  <%- partial('../../partials/topnav.partial.ejs') %>
 //homepage code
</div>

请注意,由于您将部分内容注入布局中,因此无需在每个页面上添加它。我只是想展示一个明确的例子。