2015-09-08 2 views
0

Я хочу структурировать свой JS-код, как шаблон MVC.javascript OOP - не функция

Всегда, когда сайт загружен как index.php, будет создан объект контроллера. И вызывается функция.

В файле Controller.js эта функция создает объект модели.

Но я получаю сообщение об ошибке, в котором говорится, что Модель не является функцией.

index.php Файл

<script> 
    var mController = new Controller(); 
    mController.load(); 
</script> 

Файл Controller.js

function Controller() 
{ 
    console.log('IN CONTROLLER'); // OUTPUT: IN CONTROLLER 

    this.load = function() 
    { 
     var mModel = new Model(); // OUTPUT: Model is not a function 
     mModel.load(); 
    } 
} 

Файл model.js

function Model() 
{ 
    this.load = function() { ... } 
} 

UPDATE: Ошибка были те же имя переменной и функции.

+0

Я бы назвал вашу переменную чем-то отличным от имени функции. Я бы предположил, что это проблема столкновения имен. – Andrew

+0

thx :) Это действительно было проблемой столкновения имен –

ответ

3

У вас есть какая-то ошибка:

первой: у вас есть Var в классе/функция, которые имеют такое же имя в:

var Controller = new Controller(); 

, что это не хорошо, потому что один может запутать другие. Измените это имя. Кроме того, vars по соглашению начинаются с небольших колпачков, чтобы отличать их от функций.

тогда эта линия:

this.load() = function() 

должно быть:

this.load = function() 

тогда, если вы gettting «модель не является функцией» сообщение, вероятно, потому, что вы не сдачи JS файлы в правильном порядке. Model.js должен появиться до контроллера Controller.js в html. Пожалуйста, укажите html-часть, где эти файлы загружаются. Я должен быть более или менее следующим:

<script type="text/javascript" src="Model.js"></script> 
<script type="text/javascript" src="Controller.js"></script> 

надеюсь, что это поможет.

+0

Это было причиной имени. Ouu в коде, строка правильная, просто написала это false, thx для ввода порядка порядка файлов, я не знал, что –

+0

Есть некоторые рамки и стили разработки, которые позволяют вам лучше контролировать файлы, которые загружен как require.js. Взгляните на это: http://requirejs.org/ также узнайте о AMD и CommonJs –