1

每次有新的模型项时,我都想在 foreach 循环中更改全局 jquery 变量的值。我想在日历中添加新日期,但在我可以从 foreach 循环访问这些函数之前无法做到这一点。

*编辑***

对于vov v正确回答的问题,我过度简化了我的示例。实际代码将做的不仅仅是添加一个值,因为它会将数据添加到日历中。我添加了更多代码来展示它会做得更好

jQuery:

<div id="calendar" style="width: 500px;" />
<script type="text/javascript">

    $(document).ready(function () {

        var calendar = $('#calendar').glDatePicker(
        {
            showAlways: true,
            borderSize: 0,
            dowOffset: 1,
            selectableDOW: [1, 2, 3, 4, 5],
            selectableYears: [2012, 2013, 2014, 2015],
            specialDates: [
                {
                    date: new Date(2013, 0, 8),
                    data: { message: 'Meeting every day 8 of the month' },
                    repeatMonth: true
                },
                {
                    date: new Date(2013, 5, 7),
                    data: { message: 'Meeting every day 8 of the month' }
                },
            ],
            onClick: function (target, cell, date, data) {
                target.val(date.getFullYear() + ' - ' +
                            date.getMonth() + ' - ' +
                            date.getDate());

                if (data != null) {
                    alert(data.message + '\n' + date);
                }
            }
        }).glDatePicker(true);

        $('#visible').change(function () {
            var showAlways = eval($(this).val());
            calendar.options.showAlways = showAlways;

            if (!showAlways) {
                calendar.hide();
            }
            else {
                calendar.show();
            }
        });

    });
       var value = 0;

        $('#total').click(function () {
            alert(value);
        });


        function add() {

        // will eventually add new specialDates to the calendar taken from model items

        //test lines                
        //value = value + 1;
            //return value;
        }

</script>

剃刀视图:

<input type="button" id="total"  />

@foreach (var item in Model){
    if (item.AppointmentStatus == "active")
{   
    // item display code

    @: <script type="text/javascript"> add();</script> 
}

if (item.AppointmentStatus == "history")
{
        // item display code
}

}

我运行它并在下面出现错误,因为它没有看到其他代码

'0x800a1391 - JavaScript 运行时错误:'add' 未定义'

4

2 回答 2

1

如果您只想捕获要发送给客户的“计数”,那么您可以简单地这样做:

<script>
    var value = '@Model.Count';
    // the rest of you script goes here
    $(document).ready(function () {
        $('#total').click(function () { 
            alert(value);
        }
    });
</script>

所以假设你的模型中有 7 个项目,那么将生成的 html 是这样的:

var value = 7;

当您单击该total元素时,它会给您一个带有文本的警报7

于 2013-05-01T10:54:12.317 回答
0

尝试将您的 add 函数和变量声明移到 doc ready 之外。在您的剃须刀执行之前,文档就绪中的功能不可用。

于 2013-05-01T10:50:14.773 回答