মিডিয়া মডেলে একটি রিফ্রেশ কীভাবে ট্রিগার করবেন


12

আমি একটি প্লাগইন বিকাশ করছি যা মিডিয়া মডেলটিতে একটি নতুন ট্যাব যুক্ত করে, এবং আমার সংযুক্তি ট্যাবটির একটি রিফ্রেশ ট্রিগার করার উপায়টি জানতে হবে যাতে এটি নতুন যুক্ত হওয়া সংযুক্তিগুলি দেখায়। এই কোডটি আমি ব্যবহার করছি:

wp.media.view.Toolbar.Custom = wp.media.view.Toolbar.extend({
    initialize: function() {
        _.defaults( this.options, {
            event: 'custom_event',
            close: false,
            items: {
                custom_event: {
                    text: wp.media.view.l10n.customButton,
                    style: 'primary',
                    priority: 80,
                    requires: false,
                    click: this.addAttachment
                }
            }
        });

        wp.media.view.Toolbar.prototype.initialize.apply( this, arguments );
    },

    // triggered when the button is clicked
    addAttachment: function(){
        this.controller.state().addAttachment();
        this.controller.setState( 'insert' );
        // I NEED TO TRIGGER A REFRESH OF THE ATTACHMENTS TAB HERE
    }
});

কোন সাহায্য প্রশংসা করা হবে। মিডিয়া মডেল ডকুমেন্টেশন প্রায় অ-অস্তিত্বহীন।

ধন্যবাদ


আইআইআরসি সেগুলি কেবল ব্যাকবোন / ইনডস্কোর ভিউ। অন্য কথায়, আপনি যখন মডেলটি আপডেট করেন, তখন নিজের দ্বারা দৃশ্যটি আপডেট করা উচিত কারণ "মডেলভিউ "টিকে এটি ট্রিগার করা উচিত।
কায়সার

ঠিক আছে, this.controller.state().addAttachment()ফাংশনটি কেবল একটি এজেএক্স কল ব্যবহার করে wp.media.post(), সুতরাং আমার এই এজেএক্স কলের পরে কোথাও একটি অনুমান "মডেল আপডেট" ইভেন্টটি ট্রিগার করতে হবে। কোন ধারনা?
লেমন

"কোন ধারনা?" - বর্তমানে, না এটি এমন কিছু যেখানে কোর পড়ার জন্য আমাকে বেশ কিছুটা সময় ব্যয় করতে হবে (যা আমার এখন নেই)। আপনার মন্তব্য সম্পর্কে: এখানে মার্কডাউন উপলভ্য রয়েছে (নীচে "সহায়তা" "মন্তব্য যুক্ত করুন" বোতামটি দেখুন)।
কায়সার

উত্তর:


2

আপনি এই লিঙ্কটি https://codex.wordpress.org/ জাভাস্ক্রিপ্ট_সূত্র / wp.media চেকআউট করতে পারেন

jQuery(function($){

  // Set all variables to be used in scope
  var frame,
      metaBox = $('#meta-box-id.postbox'), // Your meta box id here
      addImgLink = metaBox.find('.upload-custom-img'),
      delImgLink = metaBox.find( '.delete-custom-img'),
      imgContainer = metaBox.find( '.custom-img-container'),
      imgIdInput = metaBox.find( '.custom-img-id' );

  // ADD IMAGE LINK



addImgLink.on( 'click', function( event ){

    event.preventDefault();

    // If the media frame already exists, reopen it.
    if ( frame ) {
      frame.open();
      return;
    }

    // Create a new media frame
    frame = wp.media({
      title: 'Select or Upload Media Of Your Chosen Persuasion',
      button: {
        text: 'Use this media'
      },
      multiple: false  // Set to true to allow multiple files to be selected
    });


    // When an image is selected in the media frame...
    frame.on( 'select', function() {

      // Get media attachment details from the frame state
      var attachment = frame.state().get('selection').first().toJSON();

      // Send the attachment URL to our custom image input field.
      imgContainer.append( '<img src="'+attachment.url+'" alt="" style="max-width:100%;"/>' );

      // Send the attachment id to our hidden input
      imgIdInput.val( attachment.id );

      // Hide the add image link
      addImgLink.addClass( 'hidden' );

      // Unhide the remove image link
      delImgLink.removeClass( 'hidden' );
    });

    // Finally, open the modal on click
    frame.open();
  });


  // DELETE IMAGE LINK
  delImgLink.on( 'click', function( event ){

    event.preventDefault();

    // Clear out the preview image
    imgContainer.html( '' );

    // Un-hide the add image link
    addImgLink.removeClass( 'hidden' );

    // Hide the delete image link
    delImgLink.addClass( 'hidden' );

    // Delete the image id from the hidden input
    imgIdInput.val( '' );

  });

});

1

চেষ্টা:

wp.media.editor.get(wpActiveEditor).views._views[".media-frame-content"][0].views._views[""][1].collection.props.set({ignore:(+(new Date()))})

দেখে মনে হচ্ছে একটি সহজ উপায় অবশ্যই আছে তবে এটি আমার জন্য কাজ করে!

এটি করার আরও একটি ভাল উপায়:

wp.media.frame.content.get('gallery').collection.props.set({‌​ignore: (+ new Date())});, 

এই ক্ষেত্রে আমি গ্যালারী ট্যাব রিফ্রেশ করছি।

উপরের দুটি কোড ব্যবহার করে দেখুন এবং কোনটি আপনার পক্ষে সবচেয়ে ভাল কাজ করে তা দেখুন।


1
এটি আমার জন্য সহায়ক ছিল! ধন্যবাদ।
সিদ্ধেশ শিরোদকর

1
হ্যাঁ এটি আমার জন্যও কাজ করেছিল।
অমল ভান্ডারী এসজে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.