我在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;
}
})();