在Angular应用之外分配作用域对象
Assign Scope Objects Outside of Angular App
我正在编写一个小的Angular应用程序,它依赖于应用程序外部定义的一些通用函数来跨不同的控制器执行任务。在我的一个控制器中,scope对象是在加载控制器时声明的。我希望能够稍后在我的一个辅助函数中分配它,但是分配不工作。
相关代码如下:
.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);
}
如果我在控制器中将作用域对象赋值为空数组,一切都可以工作,但是在这个配置中赋值不起作用。我可以检查一下赋值是否在辅助函数中发生了,但当我检入控制器时它没有。
为什么?
一个主要问题是,虽然未定义的$scope.myObj;
是一个原语。当你把它作为参数传递给函数时,就不会有对原始变量
var foo;
function test(myVar){
myVar = 'Some string';
// myVar != foo
}
test(foo);
console.log(foo)// undefined
如果原始变量是数组或对象,则传递引用给该数组或对象,从而可以对其进行操作。
简而言之,只声明$scope.myObj =[];
,不要重新分配它,并破坏任何创建的引用
相关文章:
- 监视函数从服务返回不起作用,但作用域函数起作用
- 将作用域存储在JSON中
- 从控制器继承了隔离的作用域以生成可重用的指令
- 从ng模板访问作用域
- 调用私有作用域
- 对父作用域的指令更新延迟了一步
- 正在$rootScope上达到控制器作用域$在内部控制器上
- 两个指令创建新的继承的和隔离的作用域-元素得到哪个
- Javascript作用域问题,对象在分配后没有数据
- 将“*”分配给作用域中声明的变量的角度错误
- 如何从在 JS 中用作参数的匿名函数中分配外部作用域变量
- q 从 .then 函数分配给更高级别的作用域变量是否存在任何陷阱
- 为什么全局作用域中的变量被分配给窗口对象
- 纯JavaScript onclick在分配函数作用域结束后变为未定义
- 当为作用域分配不同的值并只调用一个值时
- 在Angular应用之外分配作用域对象
- JavaScript的作用域不是分配变量
- Angular JS从Ajax分配到作用域,然后计算
- Angular$scope未按预期工作.正在尝试在控制器$scope和$scope.function作用域中分配对象值
- Javascript:将函数分配为回调函数和变量作用域