首页 \ 问答 \ 如何在Vue js中访问子属性(How to access child property in Vue js)

如何在Vue js中访问子属性(How to access child property in Vue js)

顶部菜单/的script.js

module.exports = {
    components: {
        'topmenuSearch': require('vue').extend(require('./topmenu-search/component.vue'))
    }
}

/topmenu/template.html

<div class="search-overlay" v-if="topmenuSearch.searching"></div>

/topmenu/topmenu-search/script.js

module.exports = {
    data: function(){
        return {
            results: [],
            searchValue: '',
            searching: false
        }
    }
}

在控制台我得到

build.js:3008 [Vue warn]: Error when evaluating expression "topmenuSearch.searching": TypeError: Cannot read property 'searching' of undefined (found in component: <topmenu>)

我怎样才能访问topmenuSearch的孩子,这样我才能做到这一点?


topmenu/script.js

module.exports = {
    components: {
        'topmenuSearch': require('vue').extend(require('./topmenu-search/component.vue'))
    }
}

/topmenu/template.html

<div class="search-overlay" v-if="topmenuSearch.searching"></div>

/topmenu/topmenu-search/script.js

module.exports = {
    data: function(){
        return {
            results: [],
            searchValue: '',
            searching: false
        }
    }
}

In console I get

build.js:3008 [Vue warn]: Error when evaluating expression "topmenuSearch.searching": TypeError: Cannot read property 'searching' of undefined (found in component: <topmenu>)

How can I access the topmenuSearch child so I can do this thing?


原文:https://stackoverflow.com/questions/36766354
更新时间:2023-05-28 20:05

最满意答案

如果你有这样的表格:

<form id="form1" runat="server" method =" post">
    <asp:HiddenField runat="server" id="test" />
    <script type =" text/javascript" src="JavaScript1.js"  >
    </script>     

     <script type ="text/javascript">
            GETdateTime("<%=test.ClientID %>");
     </script>
</form>

比你需要一个JavaScript:

function GETdateTime(hiddenFieldID) {
    var d = new Date()
    var date = new String(d.getDate() + "/" + (d.getMonth() + 1) + "/" + d.getFullYear());
    var time = new String(d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds());
    document.getElementById(hiddenFieldID).value = "<br>" + date + "<br>" + time;
}

在提交表单之后的代码中,要获得使用JS设置的值,您可以简单地执行以下操作:

hiddenFieldVal = test.Value 

If you have a form like this:

<form id="form1" runat="server" method =" post">
    <asp:HiddenField runat="server" id="test" />
    <script type =" text/javascript" src="JavaScript1.js"  >
    </script>     

     <script type ="text/javascript">
            GETdateTime("<%=test.ClientID %>");
     </script>
</form>

Than you need a javascript:

function GETdateTime(hiddenFieldID) {
    var d = new Date()
    var date = new String(d.getDate() + "/" + (d.getMonth() + 1) + "/" + d.getFullYear());
    var time = new String(d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds());
    document.getElementById(hiddenFieldID).value = "<br>" + date + "<br>" + time;
}

Than, in code behind after form submitted, to get a value set with JS you can simply do:

hiddenFieldVal = test.Value 

相关问答

更多
  • 也许它是由浏览器缓存引起的。 您可以按Ctrl + F5刷新浏览器。 或者在F12开发人员工具中禁用缓存 Maybe it is caused by browser cache. You can press Ctrl+F5 to refresh browser. Or disable cache in F12 developer tools
  • 如果你对选择有约束力,用户也可以篡改这些值。 只需验证隐藏字段就像使用其他输入一样。 不要担心漂亮的反馈,如果值超出范围,就抛出异常。 如果有人试图摆弄你的表格,谁会在乎他是否有丑陋的错误。 我想更简洁地回答你的问题:你不能防止篡改客户端,你所能做的只是验证 - 服务器端 If you were binding to the select a user could tamper with those values too. Just validate the hidden field like you wo ...
  • 看起来您正在尝试将aspnet Control ID作为变量客户端发送,然后将它们与ClientID一起使用。 您要么不将ID作为变量发送,而只是使用带有ClientID的aspnet ID