【发布时间】:2014-12-18 08:57:33
【问题描述】:
基于在How to call custom Javascript functions from an AngularJS controller? 提出的问题的最佳答案。
我尝试了以下代码:
<body ng-app="FDAApp" ng-controller="formController">
<form ng-submit="login()">
<input type="submit" ng-click="ngSubmit()">
</form>
<script type="text/javascript" >
var app = angular.module('FDAApp', []);
angular.module('FDAApp').factory('MyService', function($http) {
var sessionKey='';
return {
sessionKey: sessionKey,
login: function()
{
sessionKey="ABCD";
}
}
});
app.controller('formController', function ($scope, $http, $templateCache, $interval, $timeout, MyService) {
$scope.sessionKey = '';
$scope.sessionKey = MyService.sessionKey;
$scope.login = function () {
MyService.login();
console.log($scope.sessionKey);
}
});
</script>
</body>
问题:我无法更新 $scope.sessionKey 的值。有什么帮助吗?
【问题讨论】:
-
不是 100% 确定你在问什么.. 但是在你调用 MyService.login() 之后你需要再次调用 $scope.sessionKey = Myservice.sessionKey 否则你的值不会更新范围。
-
您的代码存在与 JavaScript 语法相关的问题,而不是 AngularJS。在 JavaScript 中,字符串是“原始值”,而不是引用。因此,您的
MyService.sessionKey将保持等于''并且稍后更改局部变量sessionKey的值不会更改其值。
标签: javascript angularjs factory