【发布时间】:2015-10-07 22:45:10
【问题描述】:
我正在编写一个小型 Angular 应用程序,它依赖于应用程序外部定义的一些常用函数来跨不同控制器执行任务。在我的一个控制器中,范围对象是在加载控制器时声明的。我希望稍后能够在我的一个辅助函数中分配它,但分配不起作用。
以下是相关代码:
.controller('myCtrl', function($scope, myFactory){
$scope.myObj;
$scope.saveEntry = function() {
myFactory.saveEntry($scope.obj);
formatSingleTableEntry($scope.obj, $scope.myObj);
$scope.obj = {};
}
});
// Entry Formatter
function formatSingleTableEntry(entry, scopeObject) {
if (typeof scopeObject === 'undefined') {
scopeObject = [];
}
if (typeof entry.obsDt === 'string') {
entry.obsDt = dateFormat(entry.obsDt);
}
scopeObject.push(entry);
}
// Date Formatter
function dateFormat(date) {
date = date.split('');
date[10] = 'T';
date = date.join('');
return Date.parse(date);
}
如果我在控制器中将作用域对象分配为空数组,一切正常,但在此配置中没有分配。我可以检查该分配是否实际发生在辅助函数中,但是当我签入控制器时它没有。
为什么?
【问题讨论】:
-
代码当前运行的方式是保存的第一个条目将导致辅助函数将 scopeObject 变量分配为数组,然后推送条目。我可以检查一下,它工作正常,然后当我回到控制器时,即使在分配和推送之后,scopeObject 仍然未定义。
-
更详细地解释
come back....每次使用都是一个新实例。如果需要会话持久化数据需要存储在服务中 -
只是在做console.logs,在代码的不同点检查对象的类型。回来了。
-
为什么不把这些功能移到控制器里面呢?或者提供执行这些任务的服务?我还想知道您是否需要使用
$timeout()或$scope.$evalAsync()来启动您所做的更新的摘要过程。
标签: javascript angularjs angularjs-scope helper