使用$ resource引用顺序保存

时间:2016-08-05 19:46:51

标签: angularjs scope resources

我正在尝试按顺序保存2条记录,并使用第一条记录的id作为第二条记录中的引用。所以这就是它的样子......

dept = {id: 1, name:"First"}
student = {name: "a", dept_id: 1}

现在我有学生表格,我可以选择或创建一个新的部门。 我的控制器看起来像这样

.controller('StudentCtrl', ['$scope', 'Student', 'Department'], function($scope, Student, Department){

       $scope.saveStudent = function (){
           getDeptId($scope.deptName);
           var o = new Student({
               name: $scope.name,
               dept_id: $scope.deptId
           });
       }

       var getDeptId = function(name) {
          index= _.findIndex($scope.depts, {name:name})
           if(index === -1) {
             // new record
             Department.save({name:name}, function(d){
             $scope.deptId= d["id"]
             }) 
           }
           else{
            //existing record
           }
        }
});

但$ scope.deptId始终为null。

请注意我是Angularjs的新手,非常感谢任何帮助。 :d

1 个答案:

答案 0 :(得分:0)

通过查看代码,您的Department.save可能是异步的。

你可以尝试这样的事情(见下文)吗?

src

我不知道剩下的代码,但我认为你应该根据你的需要称之为“承诺”。我只是想告诉你,你必须等待“Department.save”从服务器返回,直到你设置dept_id。

我还没有测试,因为我也是新手。希望它能帮到你! :)