链接2 javascript对象
我正在开发angularJS应用程序,发现了一个无法解决的问题。我有一个带有预定义文本的变量,我想在电子邮件中用实际值替换它,它如下所示:链接2 javascript对象,javascript,angularjs,Javascript,Angularjs,我正在开发angularJS应用程序,发现了一个无法解决的问题。我有一个带有预定义文本的变量,我想在电子邮件中用实际值替换它,它如下所示: $scope.predefinedVars = { 'client_name': $scope.itemPartner.name, 'client_city': $scope.itemPartner.city, 'client_county': $scope.itemPartner.county, 'client_addres
$scope.predefinedVars = {
'client_name': $scope.itemPartner.name,
'client_city': $scope.itemPartner.city,
'client_county': $scope.itemPartner.county,
'client_address': $scope.itemPartner.address,
'client_phone': $scope.itemPartner.phone,
'client_email': $scope.itemPartner.email
};
等等
稍后,当我选择合作伙伴时,itemPartner
对象会更改数据。例如:当我从选择框中更改合作伙伴时,我有一个要监视的功能:
$scope.$watch('newContract.partner_id', function() {
$scope.itemPartner = _.where($scope.listPartners, {'id': $scope.newContract.partner_id})[0];
alert(JSON.stringify($scope.itemPartner));
});
现在,在警报中,我可以看到itemPartner
数据已更改,但如果我尝试从我的第一个变量$scope.predefinedVars
读取值,这些值仍然为空,不会更改
当我更改
itemPartner
对象时,是否有方法强制更改值 问题是您已经将预定义变量
对象的字段设置为原语。在javascript中,原语是通过值传递的,而不是通过引用传递的(如果您不确定这意味着什么,请使用google)
结果是,对最初用于设置对象的对象的任何引用都将丢失
您有两种选择:
$scope.predefinedVars
中的数据替换电子邮件,而是使用$scope.itemPartner
中的数据。这是较少的工作非常感谢你,Ed Hinchliffe,我实施了第二个选择,这是一个好主意:)
function populatePredefinedVars (partner){
$scope.predefinedVars = {
'client_name': partner.name,
'client_city': partner.city,
'client_county': partner.county,
'client_address': partner.address,
'client_phone': partner.phone,
'client_email': partner.email
};
}
$scope.$watch('newContract.partner_id', function() {
$scope.itemPartner = _.where($scope.listPartners, {'id': $scope.newContract.partner_id})[0];
populatePredefinedVars($scope.itemPartner);
});