如何在两个javascript文件之间传递值
Posted
技术标签:
【中文标题】如何在两个javascript文件之间传递值【英文标题】:How to pass value between two javascript files 【发布时间】:2014-08-11 06:23:33 【问题描述】:我已经实施了一个日历,点击后我得到了指定的日期。来自 Calender.js 的片段:
$scope.checkDate = function(key)
$scope.dateKey = key - 1;
alert("left")
alert($scope.dateKey)
if ($scope.dateKey>=1)
alert("Testing")
if(dateKey == 0)
$rootScope.loadNextDay = true;
alert("right")
;
现在我得到的 dateKey 值介于 0 到 6 之间,具体取决于所选日期。 现在我正在尝试在另一个 js 文件(一个新文件)中使用变量,即 $scope.dateKey。 application.js 的片段:-
if($scope.currentDate = true && shift==0)
alert("Hey.....")
alert($scope.dateKey)
else
alert("Testing123")
$scope.moveTo(0);
$scope.currentDate = false;
$timeElapsed.hide();
params.starthour = 0;
但是在这个 $scope.dateKey 中给出的是未定义的。从calender.js到application.js中使用dateKey的值应该怎么做?
【问题讨论】:
另一个js文件是什么意思?另一个控制器?服务? 另一个javascript文件..我在javascript文件中使用了控制器。但是两个文件都有不同的控制器。 【参考方案1】:在多个控制器之间共享信息的最佳方式是服务,因为服务是单例的,因此更容易管理和隔离范围/变量。
一个基本的例子:
var app = angular.module('myApp', []);
app.factory('datepickerinfo', function()
var keyValue;
datepickerinfo.setKey = function(key)
keyValue = key;
;
datepickerinfo.getKey = function()
return keyValue;
return datepickerinfo;
);
//你可以注入你的依赖并在多个控制器之间共享它
function MyCtrl($scope, datepickerinfo)
$scope.dateKey = datepickerinfo.getKey();
查看此question 以供进一步参考。
还有其他选择,写入 $rootscope,然后使用 emit 引发事件,值得一提的是,emit 似乎比 $broadcast 更有效
$emit:通过作用域层次向上调度事件名称通知 注册的 $rootScope.Scope 监听器。
【讨论】:
【参考方案2】:要使数据在您的 angularJS 应用程序中持久化,您应该实现服务。服务文档对于 Angular 的初学者来说可能会很混乱,但它会帮助你理解如何组织你的 Angular 应用程序:
https://docs.angularjs.org/guide/services
【讨论】:
@Nikholas..我可以在同一个 js 文件中创建服务还是必须为服务创建不同的 js 文件。 我真的不知道你说的文件是什么意思。不同文件中的代码组织不应影响 Angular 应用程序的架构。从您上面发布的代码中,我了解到您仍然是 Angular 的初学者。我认为您应该先阅读 angularJS 主页上的教程。它会回答你的许多问题。【参考方案3】:本文discusses how to make one controller communicate with another。
总而言之,您创建了一个服务,它通过$rootScope.$broadcast()
向其他控制器发送消息。
这当然假设两个控制器之间的通信是您想要实现的目标。
如果确实如此,您的问题并不完全清楚 -
你在两个不同的文件中提到了$scope
。
两个不同的 Javascript 文件中的$scope
(几乎可以肯定)将成为内存中的不同对象,
它们很可能属于不同的控制器(或服务、工厂或指令)。
除非您发布这两个文件的完整来源,否则无法分辨。
但是,这很可能是无法从另一个 $scope
访问在一个 $scope
上定义属性的原因。
【讨论】:
以上是关于如何在两个javascript文件之间传递值的主要内容,如果未能解决你的问题,请参考以下文章
如何在javascript中的不同html页面之间传递变量值
QT中两个类之间如何进行值传递?如何一个类里面定义了一个数组a[270],怎么传递给另一个类?
JavaScript --- 如何制定规则以确保用户输入的值介于两个特定数字之间