小编Bar*_*n23的帖子

如何在Vue中离开页面之前警告用户未保存的更改

我有UnsavedChangesModal一个组件需要在用户在输入字段中有未保存的更改时尝试离开页面时启动(我在页面中有三个输入字段).

components: {
    UnsavedChangesModal
},
mounted() {
    window.onbeforeunload = '';
},
methods: {
   alertChanges() {

   }
}
Run Code Online (Sandbox Code Playgroud)

javascript vue.js vuex

10
推荐指数
3
解决办法
7797
查看次数

获取LiveView中的当前路径

在正常路线中:

get /index, MyController, :index

Plug.Conn我可以简单地从的 path_info 函数获取路线。

但是,如果我有实时路线,如何检索当前路径?

live /index, IndexLive

elixir phoenix-framework phoenix-live-view

8
推荐指数
2
解决办法
5063
查看次数

如何在RecyclerView中执行拖放项目功能

我能够在列表中实现拖放项目并对其重新排序。我需要做的是实现一种删除功能,在该功能中,可以选择并按住某个项目并将其拖到垃圾箱图标。一旦它与废纸icon图标重叠,后者就会将其颜色从灰色更改为红色。用户释放项目后,将显示确认模式。 在此处输入图片说明

从演示中,您可以看到将列表中的前三个项目拖向废纸icon图标并没有将废纸icon图标变成红色,而是启动了模式。第四项确实更改了垃圾桶图标的颜色,但是没有确认就立即从列表中删除。

拖放使用ItemTouchHelperCallback以下命令实现:

public class EditItemTouchHelperCallback extends ItemTouchHelper.Callback {

    private final RVAdapter mAdapter;
    private RecyclerView.ViewHolder curHolder;

    private int curPos;
    private boolean deletedSomething;
    private CreatePhotostoryActivity cpa;

    public EditItemTouchHelperCallback(RVAdapter adapter) {
        mAdapter = adapter;
        cpa = new CreatePhotostoryActivity();
    }

    @Override
    public boolean isLongPressDragEnabled() {
        return true;
    }

    @Override
    public boolean isItemViewSwipeEnabled() {
        return false;
    }

    @Override
    public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
        int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.START | ItemTouchHelper.END;
        int swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END;
        return …
Run Code Online (Sandbox Code Playgroud)

android callback android-recyclerview itemtouchhelper

5
推荐指数
1
解决办法
1020
查看次数

温斯顿没有将日志写入文件

我为 Winston 中的错误和警告进行了两次传输,据称它们会写入文件。现有的控制台日志传输工作正常,我确实检查pm2 logs并查看了日志,但文件传输没有保存任何内容。

'use strict';

const winston = require('winston');
const m = require('moment-timezone');
let logger = null;
/**
 * Initializes the logger
 * @param {object} configLogging
 */
module.exports.initialize = function initialize(configLogging) {
  const dateFormat = 'dddd, MMMM Do YYYY, h:mm:ss a';

  logger = new winston.Logger({
    transports: [
      new (winston.transports.Console)({
        name: 'info-console',
        level: configLogging.level,
        colorize: true,
        timestamp: function() { return m.utc().format(dateFormat); }
      }),
      new (winston.transports.File)({
        name: 'warning-file',
        filename: 'warning-file.log',
        level: 'warning'
      }),
      new (winston.transports.File)({
        name: 'error-file',
        filename: 'error-file.log', …
Run Code Online (Sandbox Code Playgroud)

logging node.js winston pm2

4
推荐指数
1
解决办法
9434
查看次数

FCM Admin-Web应用程序用户的注册令牌在哪里?

我正在遵循文档中的示例,但对注册令牌感到困惑。我正在本地本地服务器上测试推送通知。如何准确检索当前注册令牌,以及如何为多个Web应用程序用户生成注册令牌?

node.js firebase firebase-cloud-messaging

4
推荐指数
1
解决办法
3169
查看次数

Docker-Alpine Elixir容器具有无法满足的约束

我的Phoenix应用程序有这个Dockerfile。使用Semaphore CI运行升级时,我的部署失败并返回以下错误:

ERROR: unsatisfiable constraints:
  libssl1.0 (missing):
    required by: world[libssl1.0]
  pdftk (missing):
    required by: world[pdftk]
Run Code Online (Sandbox Code Playgroud)

为什么无法获取这两个软件包?

elixir docker alpine-linux semaphore-ci

4
推荐指数
1
解决办法
906
查看次数

如何在棉花糖模式中添加多个验证参数

我的一个班级模型中有以下架构:

class SocialMediaSchema(Schema):
    facebook_profile_url = fields.String(required=False, validate=validate.Length(0, 71, 'Facebook username is too long.')
Run Code Online (Sandbox Code Playgroud)

除了验证长度之外,我还希望能够确保该facebook_profile_url长度永远不等于string "http://www.facebook.com/"

validation unit-testing python-3.x marshmallow

3
推荐指数
1
解决办法
1788
查看次数

Vue - 将一个元素的宽度设置为等于另一个元素的宽度

我正在尝试使用 Vue 动态地将最里面元素的宽度设置为等于最外面元素的宽度:

<div id="banner-container" class="row">
    <div class="col-xs-12">
        <div class="card mb-2">
            <div class="banner banner-tag card-body" :style="getBannerStyle"></div>
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我在 Javascript 中有以下代码,在 Vue 中有计算属性:

var container = document.getElementById('banner-container').offsetWidth;
...
computed: {
    getBannerStyle () {
        return 'width: ' + container + 'px;';
    }
}
Run Code Online (Sandbox Code Playgroud)

html javascript css vue.js

3
推荐指数
1
解决办法
4384
查看次数

Javascript - 如何创建对象数组,其中对象的键都具有相同的值

我使用以下方法创建了从当年到1930年的降序整数数组moment:

options = Array(moment().year() - 1929).fill().map((_, index) => moment().year() - index)
Run Code Online (Sandbox Code Playgroud)

我正在尝试转换options为一个对象数组,以便生成的数组是这样的:

[{value: '2018', label: '2018'}, {value: '2017', label: '2017'}, ..., {value: '2', label: '2'}, {value: '1', label: '1'}]
Run Code Online (Sandbox Code Playgroud)

javascript arrays momentjs

3
推荐指数
1
解决办法
46
查看次数

如何检测拖动的元素是否被拖放到其父元素之外?

我想知道何时将元素拖放到其父级之外:

element.addEventListener('dragend', function(event) {
  // check if element is dropped outside its parent
}, false)
Run Code Online (Sandbox Code Playgroud)

javascript drag-and-drop

2
推荐指数
1
解决办法
3666
查看次数

Vue - 如何观看具有现有值的输入

我有一个电子邮件输入和一个观察者,用于检查输入是否有效。但是,只有当您在电子邮件字段中键入内容时才会触发 watch 事件。电子邮件字段的现有值可能无效,也可能无效。如果电子邮件无效,则显示 x,否则显示检查。但是,由于电子邮件具有现有值,因此即使输入无效,最初也会显示支票。如果用户清除了电子邮件字段,并重新输入了无效的电子邮件,那么这是唯一一次触发观察者并显示 x 的时间。

这是我的 vue 实例:

var register = new Vue({
    el: '#register',
    data: {
        email: document.getElementById('profileEmail').value,
        isEmailTaken: false,
        emailTimer: null,
        emailBusy: false
    },
    methods: {
        validateEmail: function(email) {
            var self = this;
            var url  '/api/users?email=' + email;
            self.$http.get(url)
                .then(function(res){
                    self.isEmailTaken = true;
                    self.emailBusy = false;
                }, function(err){
                    self.isEmailTaken = false;
                    self.emailbusy = false;
                });
    },
    watch: {
        email: function(val) {
            var self = this;
            clearTimeout(self.emailTimer);
            self.emailBusy = true;
            self.emailTimer = setTimeout(function() {
                self.validateEmail(val);
            }, 1600);
        } …
Run Code Online (Sandbox Code Playgroud)

javascript vue.js

1
推荐指数
1
解决办法
6778
查看次数

如何在 Choices.js 中禁用按字母顺序自动排序项目?

我有以下数组:

options = [
  "Asset Management & Investment Funds",
  "Financial Institutions",
  "Life Sciences",
  "TMT",
  "Other"
]
Run Code Online (Sandbox Code Playgroud)

Choices.js默认按字母顺序排序,Other最后排在前面TMT这对用户来说是刺耳的。

const $projectDropdown = new Choices($this[0], {
  placeholder: true,
  placeholderValue: 'Select a project'
})
Run Code Online (Sandbox Code Playgroud)

我尝试查看该sortFilter函数,但它仅指定了排序方法。

javascript html-select

1
推荐指数
1
解决办法
983
查看次数

Vue 插件 vee-validate 安装不正确

我正在尝试使用vee-validate插件进行表单验证而不使用npm install --save,所以我将 dist 文件夹中的文件复制到我的项目中,但由于某种原因我无法正确使用该插件。

这就是我在 pug 文件中将插件称为脚本的方式register.pug

block main-content
  .article#register
  form
    input(
      v-model="email"
      v-validate.initial="'required|email'"
      :class="{'input': true, 'is-danger': errors.has('email') }")
block page-specific-scripts
  script(data-minjs-group="register" src="/libs/vue/vee-validate.js")
  script(data-minjs-group="register" src="/scripts/onboarding/register.js")
Run Code Online (Sandbox Code Playgroud)

这是register.js

(function(doc, win) {
  'use strict';

  var register = new Vue({ 
    el: '#register',
    data: {
      email: ''
    }
  });
})(document, window);
Run Code Online (Sandbox Code Playgroud)

当我重新加载页面时,我收到以下消息:“属性或方法“错误”未在实例上定义,但在渲染过程中被引用。” 这不应该是这种情况,因为我认为这errors是 vee-validate 插件的内置属性。

vue.js pug vee-validate

0
推荐指数
1
解决办法
3771
查看次数