所以我基本上有2个脚本。处理用户登录的用户脚本,请检查等。以及处理页面上的操作的脚本。现在我希望能够显示由页面脚本控制的按钮,但只有在用户登录时才显示该按钮。此按钮位于页面脚本元素中,因此我无法通过用户脚本来识别它。这也会非常混乱。
下面是一些代码来解释我试图做的事情:
user.js的:
var userAuth = new Vue({
el: '#userSegment',
data: { 'loggedin': false, },
ready: function(){
if(userLoggedIn){ this.loggedin = true; }else{ this.loggedin = false; }
},
});
page.js
new Vue({
el: '#body',
data: { 'buttonclicked': false, },
method: {
clicked: function(){ this.buttonclicked = true; },
},
});
index.html:
<html>
<div id='userSegment></div>
<div id='body'>
<button v-if='userAuth.loggedIn' v-on='click: clicked()' >
Click Me
</button>
</div>
//both the script links are here. Dont worrie
</html>
但是当用户登录时按钮没有显示。对不起,如果解决方案非常简单,但是这个框架的文档(比如每5个中的5个)很糟糕而且很乱。
答案 0 :(得分:1)
有几种不同的方法可以完成这种类型的操作,但主要的概念是你需要一个主数据集,所有相关的函数都会依赖它,并在用户发生变化时被修改。在这种情况下,您的数据集是用户信息:
// This would be the master global user JS object
var userAuthGlobals = {
loggedIn: false
};
var userAuth = new Vue({
el: '#userSegment',
ready: function(){
// Setting the global user auth
if(userLoggedIn) {
userAuthGlobals = true;
} else {
userAuthGlobals = false;
}
}
});
var body = new Vue({
el: '#body',
// Relies on the global user auth
data: userAuthGlobals,
methods: {
clicked: function(){ this.buttonclicked = true; }
}
});
<html>
<div id='userSegment></div>
<div id='body'>
<button v-if='loggedIn' v-on='click: clicked' >
Click Me
</button>
</div>
</html>