AngularJS:我如何在控制器之间传递变量?
发布时间:2020-12-17 09:36:57 所属栏目:安全 来源:网络整理
导读:我有两个Angular控制器: function Ctrl1($scope) { $scope.prop1 = "First";}function Ctrl2($scope) { $scope.prop2 = "Second"; $scope.both = Ctrl1.prop1 + $scope.prop2; //This is what I would like to do ideally} 我不能在Ctrl2内使用Ctrl1,因为
|
我有两个Angular控制器:
function Ctrl1($scope) {
$scope.prop1 = "First";
}
function Ctrl2($scope) {
$scope.prop2 = "Second";
$scope.both = Ctrl1.prop1 + $scope.prop2; //This is what I would like to do ideally
}
我不能在Ctrl2内使用Ctrl1,因为它是未定义的。但是,如果我试图通过它像这样… function Ctrl2($scope,Ctrl1) {
$scope.prop2 = "Second";
$scope.both = Ctrl1.prop1 + $scope.prop2; //This is what I would like to do ideally
}
我得到一个错误。有谁知道如何做到这一点? 做 Ctrl2.prototype = new Ctrl1(); 也失败。 注意:这些控制器没有嵌套在一起。
跨多个控制器共享变量的一种方法是
create a service,并将其注入任何控制器,您要使用它。
简单服务示例: angular.module('myApp',[])
.service('sharedProperties',function () {
var property = 'First';
return {
getProperty: function () {
return property;
},setProperty: function(value) {
property = value;
}
};
});
在控制器中使用服务: function Ctrl2($scope,sharedProperties) {
$scope.prop2 = "Second";
$scope.both = sharedProperties.getProperty() + $scope.prop2;
}
这在this blog(第2课和特别是)中描述得很好。 我发现,如果你想绑定到这些属性跨多个控制器,如果你绑定到一个对象的属性,而不是一个原始类型(布尔,字符串,数字)来保留绑定引用的工作更好。 示例:var property = {Property1:’First’};而不是var property =’First’;. 更新:(希望)使事情更清楚here is a fiddle显示了一个例子: >绑定到共享值的静态副本(在myController1中) >绑定到一个基元(string) >绑定到共享的值,更新UI的值更新(在myController2中) >绑定到返回基元(string)的函数>绑定到对象的属性>双向绑定到对象的属性 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
