Django整数字段被Angular读取为未定义

时间:2015-02-19 03:43:59

标签: django angularjs

我在Django中有一个模型,其中有两个变量用于事件模型:

notification = models.BooleanField(default=False)
priority_int = models.IntegerField(blank=True, default=0)  # low priority

我使用名为new-event.controller.js的控制器从用户那里获取数据,然后在events.service.js中调用create(),如下所示:

Events.create(notification, priority_int).then(createEventSuccessFn, createEventErrorFn);

new-event.controller.js还广播以下内容:

$rootScope.$broadcast('event.created', {
            notification: notification,
            priority_int: priority_int,
            author: {
                username: Authentication.getAuthenticatedAccount().username
            }
        });

我的数据正在数据库中正确保存,使用events.service.js中定义的角度工厂 - 工厂名为Events

function create(notification, priority_int){
    return $http.post('/api/v1/events/', {
            notification: notification,
            priority_int: priority_int
        });}

我有一个带有Events和$ scope的account.controller.js,account.controller.js捕获广播:

$scope.$on('event.created', function (event, pud) {
            Events.get(username).then(eventsSuccessFn, eventsErrorFn);
        });

function eventsSuccessFn(data, status, headers, config) {
            console.log('event success: ');
            vm.events = data.data;  //already correctly instantiated
        }

我有一个events.directive.js,它有控制器events.controller.js。在events.controller.js中,我正在观察对vm.events的更改:

$scope.$watchCollection(function () {
            return $scope.events;
        }, render);
        $scope.$watch(function () {
            return $(window).width();
        }, render);

这是events.controller.js中的render函数:

function render(current, original) {}

current指的是事件数组。在渲染函数内部,对于创建的事件和新创建的事件,如果我检索每个人的通知值,我会收到正确的布尔值(用户输入并保存在数据库中的值)。但是,如果我尝试检索任何事件的priority_int值,我会得到未定义,尽管数据库正确保存了用户输入的值。

我非常困惑。任何帮助表示赞赏。

这是我的events.service.js:

 (function () {
'use strict';

angular
    .module('app.events.services')
    .factory('Events', Events);

Events.$inject = ['$http'];

/**
 * @namespace Events
 * @returns {Factory}
 */
function Events($http) {
    var Events = {
        all: all,
        create: create,
        get: get
    };

    return Events;
//functions all, create and get below

这是我的events.directive.js:

(function () {
'   use strict';

 angular
.module('app.events.directives')
.directive('events', events);

 /**
  * @namespace events
  */
 function events() {
  console.log('in events directive');
/**
 * @name directive
 * @desc The directive to be returned
 * @memberOf app.events.directives.Events
 */
var directive = {
  controller: 'EventsController',
  controllerAs: 'vm',
  restrict: 'E',
  scope: {
    events: '='
  },
  templateUrl: '/static/templates/events/events.html'
};

return directive;
 }
  })();

0 个答案:

没有答案