【问题标题】:How should a javascript variable in a parent view be changed by the loaded child partial view?加载的子部分视图应如何更改父视图中的 javascript 变量?
【发布时间】:2012-10-02 18:15:22
【问题描述】:

这是在 asp.net mvc 3 中,但我认为这种情况相当普遍。

我有一个从 ajax 加载的部分视图作为预览。在预览中,如果部分预览动作不正确,可以选择一个复选标记。我需要在启动预览的视图中重新捕获它。我已经开始这样做了:

<script>
 var checkmark = false;
 $.ajax(/*load view*/);
 function calledLaterAfterPartialViewRendered(){
  if( checkmark == true ){
    //action
  }
 }
</script>

加载视图:

<script>
 //checkmark's state will be determined by the user
 $("#SomeCheckBoxInput").click(function(){ checkmark = this.value; });
</script>

一旦状态被确定,整个局部视图就会从 DOM 中移除。访问状态是否有更好的做法?我知道选中标记将在加载的视图中可用,并且在加载的视图消失后调用的函数将能够访问更新的变量。但是,这似乎不是最好的可读性。

这是标准吗?在这种情况下是否有最佳实践?

【问题讨论】:

  • 所以,不,这没有标准。
  • 太糟糕了,因为过于本地化而关闭。我也有这个问题。现在它不再“过于本地化”了吗?
  • 另一方面,OP 应该在这个问题上悬赏。

标签: javascript ajax asp.net-mvc-partialview


【解决方案1】:

好的,我明白你现在在问什么。只需检查该复选框是否在您的函数正文中被选中。所以你的复选框看起来像:

<input type='checkbox' id='check'/>

在你的功能中:

if ($('#check').prop('checked')){
    // The checkbox is checked
}

【讨论】:

  • 问题不在于将变量放入加载的视图中,而是将其从加载的视图中返回到父视图中。另请注意,复选标记的状态将由用户决定。
  • 那你能改写你的问题吗?如果勾选标记会被用户点击,那么脚本标签中的checkmark = true;与什么有什么关系?
  • 这将是用户点击的最终结果。我将改写这个问题,因为我认为从解释中很明显。
  • 到底为什么要为简单的状态转换维护一个全局变量?
  • @SimpleCoder - 对不起,但我认为我的简洁导致缺乏包容性细节。 “在您的功能中”,我假设您的意思是在父视图中。但是,在访问该函数时,预览已经消失,输入也消失了。预览类似于灯箱。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-02
  • 2013-10-28
  • 1970-01-01
  • 2017-05-04
  • 1970-01-01
相关资源
最近更新 更多