La propiedad '$' del objeto # no es una función en _.extend._ensureElement

2022-08-06 21:39:51

Estoy tratando de generar algunos valores predeterminados de un modelo de red troncal mediante la creación de una vista, pero el nodo muestra el error "La propiedad '$' del objeto # no es una función en _.extend._ensureElement". Puedo mostrar los valores predeterminados del modelo directamente como lo hago en el código a continuación, pero no usando la vista. Para mostrar un ejemplo, he comentado //myView = new firstView(); para que pueda ver el resultado, pero pronto elimino los comentarios y aparece el error. Por favor, hágame saber lo que falta y algo que estoy haciendo mal. Ya intenté envolver el código dentro de $(function(){}) pero no tuve suerte.

     express = require('express');
     $ = require('jQuery');
     _ = require('underscore');
     Backbone = require('Backbone');
     app = express();

     app.use(express.static(__dirname + ''));
     app.use(express.bodyParser());
     app.listen(process.env.PORT || 3000);

     Person = Backbone.Model.extend({
        defaults: {
            'name': 'Joe Blog',
            'job': 'Web Developer'
        }
     });

     firstPerson = new Person();
     firstView = Backbone.View.extend({

        initialize: function() {
            this.render();
        },
        render: function() {
            console.log(firstPerson.get('job'));
            return this;

        }
     })

     //myView = new firstView();
     console.log(firstPerson.get('name'));

- user1336103

Source
zh
Responder


3
  • Backbone actúa como proxy de la biblioteca jQuery. Por lo general, lo hace buscando una variable global $. Dado que ejecuta el código en el entorno del nodo, querrá hacerlo manualmente:

    var Backbone = require('backbone'),
        $ = require('jQuery');
    
    Backbone.$ = $;
    

    Como nota al margen, realmente debería usar la palabra clave var delante de las variables para hacer que las variables sean locales para el alcance de la función. (Consulte esta pregunta)