TypeError:无法读取角度中未定义的属性“then”

时间:2014-09-16 14:44:03

标签: angularjs

这是我的控制器错误是无法读取属性然后未定义。它控制台记录$ scope.newCat,然后分解。我已经有一段时间了,并且无法解决这个问题。

=============================================== ===================================

app.controller('CatCtrl', function ($scope, $location, Cat) {
   $scope.cats = Cat.all;

  $scope.newCat = {note: '', 'title': ''};

   $scope.submitCat = function () {
      console.log($scope.newCat);
      Cat.create($scope.newCat).then(function (ref) {

        $scope.newCat = {note: '', title: '', date: ''};
      });
    };

  $scope.deleteCat = function (catId) {
     Cat.delete(catId);
  };

});

=============================================== ===================================

这是我的服务

'use strict';

app.factory('Cat',
  function ($firebase, FIREBASE_URL, User) {
    var ref = new Firebase(FIREBASE_URL + 'cats');

    var cats = $firebase(ref);

    var Cat = {
      all: cats,
      create: function (cat) {
        if (User.signedIn()) {
          var user = User.getCurrent();

          cat.owner = user.username;


          return cats.$add(cat).then(function (ref) {
            var catId = ref.name();

            user.$child('cats').$child(catId).$set(catId);

            return catId;
          });
        }
      },
      find: function (catId) {
        return cats.$child(moodId);
      },
      delete: function (catId) {
        if (User.signedIn()) {
          var cat = Cat.find(catId);

          cat.$on('loaded', function () {
            var user = User.findByUsername(cat.owner);

            cats.$remove(catId).then(function () {
              user.$child('cats').$remove(catId);
            });
          });
        }
      }
    };

    return Cat;
  });

1 个答案:

答案 0 :(得分:0)

在create方法中,如果您未登录,undefinedUser.signedIn(),则返回false的一种可能性。您确定已登录,否则将解释此问题。