2015-02-07 4 views
0

У меня есть функция с простым селектором $(.some-class) не с this.$(.some-class). Я вызываю эту функцию в рендере. Но эта функция не может найти .some-class. Насколько я понимаю, я должен вызывать функцию, когда DOM загружается. Как я могу это сделать?backbonejs как вызвать функцию при загрузке страницы

Файл с видом Backbone:

var DocumentView = Backbone.View.extend({ 
    render: function(){ 
    someFunction('.some-class'); 
    }, 
}); 

Файл с функцией:

function someFunction(target) { 
    $(target); 
} 

Я не могу найти элемент с классом '.some-class', с позвоночником, но при загрузке страницы я могу сделать это.

+0

И ваш код ... – Tomanow

+0

@Tomanow Добавлено –

+1

по теме, но не ответ:.?. будьте осторожны, как вы структурировать Backbone View Если это зависит от элементов DOM вне себя (т. Е. У вас есть для нас e глобальный метод '$ (...)'), у вас будут проблемы с этим кодом позже. Лучшим примером является использование метода jQuery с областью видимости, 'this. $ (...)', который найдет только элементы DOM в представлении. Кроме того, если вам интересно, использование Marionette (http://marionettejs.com/docs/v2.3.2/marionette.application.html) направит вас в правильном направлении, как с точки зрения кода, готового к DOM, так и структура приложения. –

ответ

1

Поскольку вы используете Backbone, вы уже используете jQuery. Сказав это, вы можете поместить весь код в функции обратного вызова JQuery следующим образом:

$(function() { 
    function someFunction(target) { 
     $(target); 
    } 
    ... 
    ... 
    var DocumentView = Backbone.View.extend({ 
     render: function(){ 
      someFunction('.some-class'); 
     }, 
    }); 
}) 

Это гарантировало, что код будет только дозвонились когда DOM полностью загружена (dom ready jquery)

Другой альтернативой, является поместить весь код (или JavaScript-файлы) на только до закрытия body элемент

+0

Функция и вид являются отдельными файлами –

+0

Это не имеет значения, если оно вызывается, когда DOM готов ... и учитывая, что вы определяете 'DocumentView', который вызывает' someFunction' в обратном вызове jQuery .. он должен будь умницей. –

Смежные вопросы