我的布局页面:

<html>
 <body>
  <div id="container">
   <ul id="list"></ul>
  </div>
  <input id="update" value="update" />
 </body>
</html>

其中ul列表是部分,将在

  1. 整个页面已加载
  2. 单击“更新”按钮时,会发出AJAX reqeust,并且将使用响应UL列表更新容器层的InnerHTML

我是YII的新手,不确定如何在两种情况下都重复使用UL部分,我搜索了一些谷歌,而小部件似乎是解决方案,不确定。有任何想法吗?

谢谢。

有帮助吗?

解决方案

如果我理解您的问题,您可以做一些事情...

(我假设您有一个部分视图文件,例如views/model/_list.php。)

您可以在初始页面加载上进行renderpartial('/model/_list'),然后在Ajax Action中再次调用RenderPartial('/Model/_list')。

或者,您可以只使用Ajax操作(包含renderpartial('/model/_list')),然后使用jQuery在页面加载上调用它,而不是在视图中呈现(只需调用yii :: app() - > getClientscript() - > getClientscript() - >在您要加载的位置的视图中,请登记字样,并使用$ .AJAX()或拨打电话)。

我完成的第三件事是在控制器中发挥作用(不是 行动, ,只是一种常规的公共方法),它返回renderpartial的输出(返回$ this-> renderpartial('/mody/_list',array(),true)。然后,在调用yii :: app() - > end();的初始负载i呼应该功能的初始负载i呼应该功能中,然后在Ajax操作中呼应它。

当您将在网站上呈现一些部分代码,即使在不同控制器的页面上,小部件也很有用。因此,如果该列表在整个站点的侧边栏中,则最好将小部件从中拿出来,否则我只会使用您正在使用的模型的控制器。您将使用窗口小部件与常规视图相同 - 要么在小部件中构建数据并渲染partialview,要么通过Ajax调用它。您可能会为Ajax做的事情是帖子到您从中获取数据的控制器,因此您仍然需要Ajax操作。小部件只会使其更容易在网站周围放置不同的位置。

祝你好运!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top