可变数量的可选参数

时间:2017-10-25 19:27:00

标签: javascript jquery optional-parameters jconfirm

我在这里http://craftpip.github.io/jquery-confirm/#dialog使用这个工具,我希望有一个弹出窗口,它具有可变数量的按钮,这些按钮基于用于构建弹出窗口的数据。

以下是一个非常简单/空白的例子。

var app = angular.module('accordions', []);

app.controller('MainCtrl', function($scope) {
  $scope.fieldAccordions = [{
    fieldAccordionHeader: 'Header 1',
    collapseToggle: 'one',
    fieldAccordionItems: [{
      desc: 'Item 1 - A'
    }, {
      desc: 'Item 1 - B'
    }]
  }, {
    fieldAccordionHeader: 'Header 2',
    collapseToggle: 'two',
    fieldAccordionItems: [{
      desc: 'Item 2'
    }]
  }, {
    fieldAccordionHeader: 'Header 3',
    collapseToggle: 'three',
    fieldAccordionItems: [{
      desc: 'Item 3'
    }]
  }];
});

我想要的是能够在“按钮:{...}”的一侧放置一个foreach循环。

有没有办法这样做或者有办法实现我想做的事情?

2 个答案:

答案 0 :(得分:0)

在构建您的选项对象之前:

var options = {
    title: 'testing',
    content: 'this has two static buttons',
    buttons: {},
};

$.each( variable_name, function(){
    options.buttons[ this.btn_name ] = this.fn;
} );

$.confirm( options );

当然,一切都取决于你循环的对象是怎样的,但逻辑就在这里。

答案 1 :(得分:0)

你的逻辑是倒置的。以下是一个对象:

{
    title: 'testing',
    content: 'this has two static buttons',
    buttons: {
        confirm: function () {
        },
        cancel: function () {
        },
    }
}

所以你可以这样做:

var options = {
    title: 'testing',
    content: 'this has two static buttons',
    buttons: {
        confirm: function () {
        },
        cancel: function () {
        },
    }
};
$.confirm(options);

然后您可以按

添加项目
options.buttons["mybutton"] = function() { };

您可以将前面的代码放在循环中并更改字符串" mybutton"无论您有什么功能,都可以随心所欲。您基本上问how to add a property to and existing javascript object