sqrtqiezi

1087 经验值

此文章仅是Laravist群中Abraham同学在日常聊天对PHP、对Laravel、对项目的一些杂谈的简单整理. Abraham,给人感觉是一位在PHP语言方面理解比较深的人 laravel以及MVC 1.个人粗浅的理解,所谓业务逻辑就是验证表单,发短信,发邮件,查询转成数据库sql等等,这些除了数据库查询之外常用的东西,也包括构造页面的标题了,或者 ajax 接口生成 json 结果这些琐碎的

搞起,另外webpack系列也再深入一些吧

在 AuthController 里修改(大约33行)

 protected $redirectTo = '/你想要的地址';

你的点击退出,返回到首页B的动作,不会只是简单的加一个链接指向到页面B,而没有做logout吧?如果是,那么重新读文档,Authentication 这一节。

shell本身没有太多好说的,基本语法花半天到一天时间就可以熟悉。但shell只是你跟操作系统沟通的语言,要熟悉你工作的操作系统才能熟练的使用shell。
推荐鸟哥(台湾的鸟哥,不是写php7 的那个)的Linux私房菜 基础篇服务器篇

我是自己简单封装了一个Pagination 组件

<script type="text/x-template" id="fy-pagination-template">
    <nav class="pagination-nav pull-right">
        <ul class="pagination">
            <li>
                <a :href="previous" @click.stop.prevent="goPage(previous)" aria-label="上一页">«</a>
            </li>
            <template v-for="(key, value) in pages">
                <li><a :href="value" @click.stop.prevent="goPage(value)">@{ key + 1 }</a></li>
            </template>
            <li>
                <a :href="next" @click.stop.prevent="goPage(next)" aria-label="下一页">»</a>
            </li>
        </ul>
    </nav>
</script>
<script>
    Vue.component('fy-pagination', {
        template: '#fy-pagination-template',
        data: function () {
            return {
                pages: [],
                next: '#',
                previous: '#'
            }
        },
        methods: {
            goPage: function (page) {
                if (page && page !== '#')
                    this.$dispatch('pagination.page.change', page);
            }
        },
        events: {
            'pagination.data.ready': function (pagination) {
                var current_page = pagination.current_page,
                        total_pages = pagination.total_pages;
                if (current_page < total_pages)
                    this.next = current_page + 1;
                else
                    this.next = '#';
                if (current_page > 1)
                    this.previous = current_page - 1;
                else
                    this.previous = '#'

                var i;
                this.pages = [];
                for (i = 1; i <= total_pages; i++) {
                    if (i === current_page)
                        this.pages.push('#')
                    else
                        this.pages.push(i);
                }
            }
        }
    });
</script>

然后调用方法如下:

<div id="parentComponet">
    <!--- 渲染数据和其他什么的 -->
    <fy-pagination></fy-pagination>
</div>
<script>
    var vm = new Vue({
        methods: {
            refresh: function () {
                //更新数据
                this.$http.get(this.apiUrl).then(
                        function (res) {
                            this.items = res.data.data;
                            // pagination元信息由dingo api的paginator方法提供
                            this.$broadcast('pagination.data.ready', res.data.meta.pagination);
                        }, function (res) {
                            console.log(res.status);
                        });
            },
        },
        events: {
            'pagination.page.change': function (page) {
                this.page = page;
                this.refresh();
            }
        }
    })
</script>

父子组件之间通过事件进行通信,父组件负责数据的加载,仅将分页信息传给pagination组件。pagination组件内不存api地址,仅保存page number,切换页面时将变更的页码传递给父组件,让父组件刷新数据。

自己造完轮子之后才发现原来有vue-pagination这货,不过也不太喜欢callback的方式(因为需要时刻费心惦记this指向谁....),就一直用自己DIY的分页组件了。希望对你有所帮助 ^_^

按行写入,还是按列写入区别不是很大吧。无非就是:
1、遍历你的数据
2、定位数据在excel中对应的位置:http://www.maatwebsite.nl/laravel-excel/docs/export#cells
3、写入数据
4、回到步骤1,直到数据为空。

@sodasix
好像我对问题理解有误,如果是socket.io传递过来的id进行同步的话,建议你通过id在items里查找到对应的item,然后丢给Vue封装的变异方法。
一楼的代码问题:一是,业务代码跟html结构耦合了,而Vue的响应式数据绑定在努力消除这种耦合;二是,为了这么小的事情引入jQuery确实不太优雅。
Happy hacking ~

不要操作DOM,操作数据,让Vue负责视图的更新:

<div id="demo">
    <ul>
        <li v-for="item in items">
            <span>  item.id  </span>
            <span>  item.msg  </span>
            <span v-show="item.ok"> ok</span>
            <a href="javascript:;" @click="del(item)">del</a>
        </li>
    </ul>
</div>

<script>
    var viewModel = new Vue({
        el :'#demo',
        data: {
            items:[
                { msg : '列表1', ok: 1, id: 1},
                { msg : '列表2', ok: 2, id: 2},
                { msg : '列表3', ok: 0, id: 3}
            ]
        },
        methods: {
            del: function (item) {
                this.items.$remove(item)
            }
        }
    });
</script>