добавление модели в коллекцию реляционной модели в событии ajax

У меня есть модель рецепта, а в рецепте есть коллекция списков ингредиентов, в которой хранится множество ингредиентов.

Когда я добавляю ингредиент в список ингредиентов из отправки формы, мне нужно получить «идентификатор» с сервера, поэтому я выполняю запрос ajax, получаю идентификатор и затем пытаюсь добавить ингредиент в модель.

В моем inventorylist.view у меня есть

    initialize: function(){
        this.recipe = this.model;
        },

         get_ingredient: function(ingredient){
            var ingredient_id = new MyApp.Models.Ingredient;
        ingredient.url='/ingredients/?ing='+encodeURIComponent(ingredient_array[i]);

        ingredient.fetch({

            success: function() {
                this.recipe('add:ingredients', function(ingredient,ingredientlist){

                });
            },
            error: function() {
                new Error({ message: "adding ingredient" });
            }
        });
        }

Я не включил функцию, которая запускает get_ingredient, потому что я получаю штраф ajax, поэтому проблема не в запуске get_ingredient.

Я получаю ошибкуUncaught TypeError: Property 'recipe' of object [object DOMWindow] is not a function, используя существующий код.

как лучше всего добиться этого?


person pedalpete    schedule 10.01.2012    source источник


Ответы (1)


Во-первых, я тоже новичок в backbone.js! Итак, мои мысли:

  • Вам нужно привязать ваш get_ingredient в вашем представлении: посмотрите bind, чтобы активировать свои функции!
  • Попробуйте передать Context (this) в "get_ingredients"

Это всего лишь мои 5 центов

person 3logy    schedule 11.01.2012
comment
Я не уверен, что вы имеете в виду, говоря о прохождении Context(this), вы можете уточнить? может быть какой-нибудь пример кода? Я связал get_ingredient в операторе инициализации представления, но когда я пытаюсь вывести console.log(this.recipe), я все равно получаю undefined. - person pedalpete; 11.01.2012
comment
Как вы передаете свою модель в представление? вы должны проверить, действительно ли Модель передана, например: в Маршрутизаторе (если вы его используете) !! - person 3logy; 11.01.2012
comment
ага, передаю на просмотр через роутер. В моем операторе инициализации в представлении у меня есть console.log(this.model), и это не вызывает проблем с моделью, и модель имеет реляционную структуру, так что это тоже не проблема. - person pedalpete; 11.01.2012
comment
Я удалил $ .ajax для более магистрального .fetch, и теперь моя ошибка изменилась, но проблема остается прежней, я не могу добавить модель в коллекцию. Я тоже обновил вопрос. - person pedalpete; 11.01.2012
comment
Я решил использовать [stackoverflow.com/questions/6353607/), и это сработало с первого раза (по большей части). Я думаю, что сейчас может быть проще придерживаться более традиционных методов построения магистрали. Спасибо за вашу помощь. - person pedalpete; 11.01.2012