部分视图中的JavaScript元素格式,但不起作用

时间:2016-08-19 19:04:55

标签: javascript jquery asp.net-mvc partial-views asp.net-mvc-partialview

javascript元素在主视图中起作用,但在局部视图中不做任何事情。它格式正确,但不起作用。有什么建议吗?

看到这个小提琴:http://jsfiddle.net/bgrins/ctkY3/

<input type='text' class="basic"/>
<em id='basic-log'></em>

$(".basic").spectrum({
    color: "#f00",
    change: function(color) {
        $("#basic-log").text("change called: " + color.toHexString());
    }
});

我试图将颜色选择器包含在局部视图中。

1 个答案:

答案 0 :(得分:0)

您无法在局部视图中实际调用脚本部分并在那里执行此方法。那是设计上的。见Darin的post here

您可以做的是,将此方法保留在主视图中。如果需要,您仍然可以从局部视图中有条件地执行此操作。

所以在主视图中

<script>
    var mySettings = mySettings || {};
    mySettings.shouldIShowSpectrum = false;
</script>
@Html.Partial("YourPartialViewNameHere")
@section scripts
{
    <script>
     function enableSpectrum() {
        $(".basic").spectrum({
            color: "#f00",
            change: function (color) {
                $("#basic-log").text("change called: " + color.toHexString());
            }
        });
    }
    // You can put the above method in an external js file as well.

    $(function() {
        if (mySettings.shouldIShowSpectrum)
        {
            enableSpectrum();
        }

    });
    </script>
}

在部分视图中,您可以将mySettings.shouldIShowSpectrum值设置为true,以便在呈现页面时启用插件。

<h5>My Partial</h5>
<input type='text' class="basic" />
<em id='basic-log'></em>
<script>
    console.log("going to enable the plugin");
    var mySettings = mySettings || {};
    mySettings.shouldIShowSpectrum = true;
</script>