我是AngularJS的初学者。但是,我在提交表单后无法更新$ rootScope值,它将被返回为未定义。
控制器:
app.controller('campaignCtrl', ['$scope', '$rootScope', function($scope, $rootScope) {
$scope.submit = function() {
$rootScope.campaign = this.campaign;
};
}]);
形式:
<form class="holder" name="campaignForm" ng-submit="submit()" >
<div class="form-group" show-errors>
<label for="inputDate">Date</label>
<p class="help-block"><em>Ex: 12/10/2015</em></p>
<input type="date" class="form-control" name="inputDate" ng-model="campaign.date" id="inputDate" required>
</div>
<button type="submit" class="btn btn-lg btn-default pull-right">Submit</button>
</form>
答案 0 :(得分:0)
尝试
$scope.submit = function() {
$rootScope.campaign = $scope.campaign;
};
编辑:
尝试从按钮中删除type="submit"
。可能是您的处理程序没有被调用,因为浏览器会自动处理表单提交(尽管您可以通过在该函数中添加日志来验证)。
<button class="btn btn-lg btn-default pull-right">Submit</button>
编辑2:
根据评论我们的对话:$rootScope
不会在请求中保留。您需要将其存储在永久性的位置(如本地存储或cookie),或者将其传递给服务器,如果要保留该值,则将其传递回客户端。我敢打赌,如果你在$scope.submit
函数中添加一个日志,那么将在那里有一个值。
答案 1 :(得分:0)
检查一下。您的代码似乎是正确的,除了您在输入
上缺少结束标记`http://jsfiddle.net/ashishmusale/2001cf6r/`
答案 2 :(得分:0)
我使用了您的代码并在$watch
上添加了$rootScope.campaign
,效果很好。
.controller('someController', function($scope, $rootScope) {
$scope.submit = function() {
$rootScope.campaign = $scope.campaign;
};
$rootScope.$watch('campaign', function(newVal, oldVal) {
if(newVal !== oldVal) {
console.log("New Val = ");
console.log(newVal);
}
});
});
如果您正在寻找在页面刷新过程中持续存在的内容,那就不是$rootScope
。看看这样的事情:AngualrJS: sustaining data on html refresh