2013-08-29 2 views
1

Я беспокоюсь, что я просто делаю действительно глупую ошибку, но я был в этом несколько часов безрезультатно.

Я изучаю стек MEAN, и я продвигаюсь вперед. Прямо сейчас я делаю небольшое поддельное приложение TaskList CRUD, чтобы убрать все основы, и до сих пор я не могу ПОЛУЧИТЬ проблему, но все.

Моя фабрика:

.factory('Tasks', function ($resource) { 

    var tasks = $resource('tasks',{},{update:{method: 'POST', isArray:true}}); 
    return tasks; 
} 

Мой контроллер:

.controller('TasklistCtrl', function ($scope, Tasks) { 

    $scope.taskList = Tasks.query(); 

    $scope.addTask = function(){ 

     $scope.taskList.push($scope.newTask); 
     Tasks.update({}, $scope.newTask); 

}; 

И мой HTML довольно прямо вперед теперь

<table> 
    <th><h2>Fun Practice Task List!</h2></th> 
    <tr ng-repeat="task in taskList | orderBy:'title'"> 
     <td><h3>{{ task.title }}</h3> </td> <td><h3>{{ task.task }}</h3></td> 
    </tr> 
</table> 

<form> 
    <input type="text" ng-model="newTask.title"/> 
    <input type="text" ng-model="newTask.task"/> 

    <h2>{{ newTask }}</h2> 

    <button type="submit" ng-click="addTask()" class="btn btn-default">Submit</button> 
</form> 

Бэкэнд уже выражают работать это волшебство, привязанный к MongoDB.

Прямо сейчас POST отправляется успешно, но он просто отправляет оригинал GET прямо на сервер. Первоначально у меня просто было

Tasks.save(); вместо

Tasks.update ({}, $ scope.newTask);

Но это тоже не сработало. Я почти уверен, что я просто не понимаю что-то фундаментальное, и я собираюсь прочитать больше документации/смотреть больше учебников/практикующих - но, надеюсь, кто-то может дать мне несколько советов в то же время! Использование Angular 1.2 btw.

редактировать:

Так принимая предложение Зака, мой контроллер теперь выглядит следующим образом:

.controller('TasklistCtrl', function ($scope, Tasks) { 

    $scope.taskList = Tasks.query(); 

    $scope.addTask = function(){ 

    Tasks.save($scope.newTask, function(data) { 
     $scope.taskList.push(data); 
    }); 

}; 

Однако, в то время как я вижу, успешные сообщения отправляются, по наблюдению пост только точно такие же данные Я получаю от Tasks.query(). «данные» в обратном вызове сохранения - это одни и те же данные без изменений. Где я ошибаюсь, почему scope.newTask не отправляется обратно?

ответ

0

попробовать что-то вроде этого:

Tasks.save($scope.newTask, function(data) { 
    $scope.taskList.push(data); 
}); 

На месте этих двух:

$scope.taskList.push($scope.newTask); 
Tasks.update({}, $scope.newTask); 
+0

Спасибо за быстрый ответ, к сожалению, я получаю эту ошибку TypeError: Object функция ресурса (значение) { copy (значение || {}, это); } не имеет метода 'post' at Object. $ Scope.addTask Итак, похоже, что «пост» - это не метод $ resource? – monkeyhands

+0

О да, кричит. Tasks.save (... –

+0

Спасибо, я думаю, что это - работа от работы, но я должен делать что-то неправильно, потому что ничего на самом деле не происходит так, как это должно быть. Данные, отправленные почтой, как представляется, являются данными (а точнее, данные, отправленные с помощью save(), совпадают с данными, которые я захватил с запросом()). Поэтому мне, возможно, придется перестроить все это - независимо от того, ваш ответ решил мою непосредственную проблему, даже если он просто выставил для меня еще один: P. – monkeyhands

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