Если вы используете нокаут, то это даже чище.Представьте, что у вас есть следующее:
var dialog = $('#my-dialog').dialog({
width: '100%',
buttons: [
{ text: 'Submit', click: $.noop, 'data-bind': 'enable: items() && items().length > 0, click: onSubmitClicked' },
{ text: 'Enable Submit', click: $.noop, 'data-bind': 'click: onEnableSubmitClicked' }
]
});
function ViewModel(dialog) {
var self = this;
this.items = ko.observableArray([]);
this.onSubmitClicked = function () {
dialog.dialog('option', 'title', 'On Submit Clicked!');
};
this.onEnableSubmitClicked = function () {
dialog.dialog('option', 'title', 'Submit Button Enabled!');
self.items.push('TEST ITEM');
dialog.text('Submit button is enabled.');
};
}
var vm = new ViewModel(dialog);
ko.applyBindings(vm, dialog.parent()[0]); //Don't forget to bind to the dialog parent, or the buttons won't get bound.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/themes/smoothness/jquery-ui.css" />
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<div id="my-dialog">
Submit button is disabled at initialization.
</div>
Магия исходит от источника пользовательского интерфейса jQuery :
$( "<button></button>", props )
Вы можете в основном вызывать ЛЮБУЮ функцию экземпляра jQueryпередавая его через объект кнопки.
Например, если вы хотите использовать HTML:
{ html: '<span class="fa fa-user"></span>User' }
Или, если вы хотите добавить класс для кнопки (вы можете сделать этонесколькими способами):
{ addClass: 'my-custom-button-class' }
Может быть, вы с ума сошли, и хотите убрать кнопку из домена, когда она зависла:
{ mouseover: function () { $(this).remove(); } }
Я действительно удивленчто никто, кажется, не упомянул об этом в бесчисленном количестве тем, как это ...