在Nginx反向代理上使用mithril.js进行一些请求

时间:2019-04-02 05:56:43

标签: javascript nginx mithril.js

我是前端的新手,我在业余时间学习mithril.js,我认为这很棒。刚才我在读有关m.request()的内容,但有些东西我没有得到。我在oninit函数中放置了一个从服务器中获取一些数据的组件,以填充变量。 view中使用了相同的变量来显示数据,但是一旦请求返回,就不会呈现数据。这是代码:

const m = require("mithril");
import Stuff from './stuff.js';
var WelcomePage = {
  stufflist: [],
  oninit: function(vnode) {
    m.request({
      method: "GET",
      url: "wfd/stuff",
      data: {offset:0, limit:5}
    }).then((result) => {
      WelcomePage.stufflist = result;
    });
  },
  view: function(vnode) {
    return (
      <div>
        Welcome! Have your stuff :)
        <ul>
        {
          WelcomePage.stufflist.map(stuff => (
            <li>
              <Stuff stuff = {stuff}></Stuff>
            </li>
          ))
        }
        </ul>
      </div>
    );
  }
}
export default WelcomePage;

当然,请求以预期的内容结尾,并且Stuff组件可以正常工作。我想念什么?

更新:我忘了提到此秘银页面位于我配置的反向代理之后。就我离开代理服务器而言,该页面有效,因此可能存在错误。这是我的dockerized nginx:alpine default.conf文件:

server {
  listen       80;
  server_name  stuff.dev;

  #charset koi8-r;
  #access_log  /var/log/nginx/host.access.log  main;

  location / {
    root   /usr/share/nginx/html;
    index  index.html index.htm;
  }

  location /wfd {
    proxy_pass http://localhost:8080/;
  }
}

2 个答案:

答案 0 :(得分:1)

由于您可能只想更新组件的一个实例,而不是

@media(max-height: 1100px) and (min-width: 1200px)

您可能想要

WelcomePage.stufflist = result;

然后在您看来使用

vnode.state.stufflist = result;

注意:只要不使用箭头功能,就可以使用vnode.state.stufflist.map(...) 的{​​{1}} istead。

答案 1 :(得分:0)

..问题是WelcomePage组件已在主.js文件中呈现。与mithril.js文档states一样,如果您希望组件从auto-redraw系统中受益,则必须安装它。因此,安装我的WelcomePage解决了我的“问题”。