2016-07-04 11 views
1

Ich möchte Popups auf meiner ersten Webseite, die ein Backbone verwenden.Verwenden von jQuery UI Dialog mit Backbone.js und RequireJS

define(['jquery', 
'jqueryui', 
'underscore', 
'backbone', 
'api', 
'text!' + versions.getVersionedPath('templates/form.html') 

function ($, jqueryui, _, Backbone, Api, Form) { 
    var widok = Backbone.View.extend({ 
     formularz: _.template(Form), 
     el: 'body', 
     events: { 
      'click #test': 'test', 
      'click .del': 'usun', 
      'click #elo': 'test2' 
     }, 
     initialize: function() { 
      this.$el.html(this.formularz()); 
      self = this; 
      console.log('This model has been initialized.'); 
      this.render(); 
     }, 
     render: function() { 
      console.log('Showing up'); 
        this.$el.html(this.formularz()); 
     }, 
     test: function() { 
      self.showNews(); 
      return false; 

     }, 
     test2: function() { 
      $("#dialog-confirm").dialog({ 
       resizable: false, 
       height: 140, 
       modal: true, 
       buttons: { 
        "Delete all items": function() { 
         $(this).dialog("close"); 
        }, 
        Cancel: function() { 
         $(this).dialog("close"); 
        } 
       } 
      }); 
     } 
    }); 

    return {initialize: function() { 
      console.log('Initialize'); 
      new widok; 
      self.showNews(); 
      console.log('blablablablabla'); 
     }}; 

}); 

Ich habe Funktion wie diese, aber wenn ich versuche, es zu benutzen, hatte ich Fehler wie

Uncaught TypeError: $(...).dialog is not a function. 

I jquery und jQueryUI definiert haben. Jemand könnte mir helfen?

haben es auf requirejs Config

shim: { 
    jqueryui: { 
    "deps": ['jquery'] 
    }, 
+0

Haben Sie definieren für jQuery UI Shim? Bitte poste die requirejs-Konfiguration. –

+0

Ja, ich habe Shim für jQuery UI definiert :) – nEJVI

+0

jQuery Ui exportiert wirklich nichts, also ist es besser, es als letztes hinzuzufügen. Vielleicht ist der Weg falsch oder so? BTW welche Version von jQuery UI verwenden Sie? –

Antwort

0

Der Code, den Sie Syntaxfehler geteilt hat, werden Sie die Abhängigkeit Array nicht schließen.

jQuery UI unterstützt AMD von Version 1.11.0. Hier ist ein guide für die Verwendung mit AMD Loadern. Wenn Sie die neuesten Versionen verwenden, entfernen Sie die shim aus der Konfiguration.

auch beachten, dass jqueryui in Ihrem Modul undefined sein wird, da er nichts exportieren, so ist es besser, solche Dinge am Ende der Abhängigkeiten wie hinzuzufügen:

define([ 
    'jquery', 
    'underscore', 
    'backbone', 
    'api', 
    'text!' + versions.getVersionedPath('templates/form.html'), 
    'jqueryui'], 
function ($, _, Backbone, Api, Form) {});