将参数传递给 Vue 函数



如何将选定的值传递给 vuejs 函数?

参考下面的代码,我该如何传递它?

这里选择相机(camera(,camera变量是未知的,因为它是嵌套的。如何使选定的相机变量发送到选择相机?

            <select style="width:100%" v-model="cameras" v-on:change="selectCamera(camera)">
                <option v-model="camera.id" v-for="camera in cameras" :key="camera.id"> {{ formatName(camera.name) }} </option>
            </select>

更新

我附有如下代码

var app = new Vue({
    el: '#app',
    data: {
        scanner: null,
        activeCameraId: null,
        cameras: [],
        scans: []
    },
    mounted: function() {
        var self = this;
        self.scanner = new Instascan.Scanner({
            video: document.getElementById('preview'),
            mirror: true,
            backgroundScan: false,
            scanPeriod: 2
        });
        self.scanner.addListener('scan', function(content, image) {
            PlaySound();
            showContent(content);
            //google.script.run.capture(content);
            alert(content)
            $.ajax({
            url: 'https://script.google.com/macros/s/AKfycbzObHXjA-gXSyxvyRc5nYVs6yP2sElNpfuWMsIGtLf1yUUXd4n7/exec?data='+content+'&callback=doNothing',
            type: 'GET',
            dataType: 'jsonp',
            error: function(xhr, status, error) {
                alert("error");
            },
            success: function(json) {
                alert("success");
            }
        });

            self.scans.unshift({
                date: +(Date.now()),
                content: content
            });
        });
        Instascan.Camera.getCameras().then(function(cameras) {
            self.cameras = cameras;
            if (cameras.length > 0) {
                self.activeCameraId = cameras[1].id;
                self.scanner.start(cameras[1]);
            } else {
                console.error('No cameras found.');
            }
        }).catch(function(e) {
            console.error(e);
        });
    },
    methods: {
        formatName: function(name) {
            return name || '(unknown)';
        },
        selectCamera: function(camera) {
            this.activeCameraId = camera.id;
            this.scanner.start(camera);
        }
    }
});
我认为

您正在尝试从下拉列表中获取选定的相机选项。试试这种方式

.HTML

    <select style="width:100%" v-model="activeCameraId" v-on:change="selectCamera()">
        <option v-for="camera in cameras" :value="camera.id"> {{ formatName(camera.name) }} </option>
    </select>

.JS

var app = new Vue({
    el: '#app',
    data: {
        scanner: null,
        activeCameraId: null,
        cameras: [],
        scans: []
    },
    mounted: function() {
        var self = this;
        self.scanner = new Instascan.Scanner({
            video: document.getElementById('preview'),
            mirror: true,
            backgroundScan: false,
            scanPeriod: 2
        });
        self.scanner.addListener('scan', function(content, image) {
            PlaySound();
            showContent(content);
            alert(content)
            $.ajax({
                url: 'https://script.google.com/macros/s/AKfycbzObHXjA-gXSyxvyRc5nYVs6yP2sElNpfuWMsIGtLf1yUUXd4n7/exec?data='+content+'&callback=doNothing',
                type: 'GET',
                dataType: 'jsonp',
                error: function(xhr, status, error) {
                    alert("error");
                },
                success: function(json) {
                    alert("success");
                }
            });
            self.scans.unshift({
                date: +(Date.now()),
                content: content
            });
        });
        Instascan.Camera.getCameras().then(function(cameras) {
            self.cameras = cameras;
            if (cameras.length > 0) {
                self.activeCameraId = cameras[1].id;
                self.scanner.start(cameras[1]);
            } else {
                console.error('No cameras found.');
            }
        }).catch(function(e) {
            console.error(e);
        });
    },
    methods: {
        formatName: function(name) {
            return name || '(unknown)';
        },
        selectCamera: function() {
            for (var i = 0; i < this.cameras.length;i++) {
                if (this.cameras[i].id === this.activeCameraId) {
                    this.scanner.start(this.cameras[i]);    
                }
            }
        }
    }
});

最新更新