Javascript AngularJS-在控制器之间共享作用域值
我的HTML中有一个文本区域,如下所示:Javascript AngularJS-在控制器之间共享作用域值,javascript,html,angularjs,Javascript,Html,Angularjs,我的HTML中有一个文本区域,如下所示: <textarea ng-model="commentBox"></textarea> 然后让我的控制器通过点击按钮发送范围信息 $scope.testFunction = function () { myFactory.addComment($scope.commentBox); } 但是,是的,那没有成功 请注意,我需要它在工厂内工作,而不是在HTML中使用另一个ng控制器。您需要在工厂中返回保存的var var s
<textarea ng-model="commentBox"></textarea>
然后让我的控制器通过点击按钮发送范围信息
$scope.testFunction = function () {
myFactory.addComment($scope.commentBox);
}
但是,是的,那没有成功
请注意,我需要它在工厂内工作,而不是在HTML中使用另一个ng控制器。您需要在工厂中返回保存的var
var saved = {};
factory.addComment = function (commentbox) {
saved.comment = commentbox
}
return saved
这里有一个使用服务的示例
app.service('fakeService', function() {
var savedData = {};
var addComment = function(newComment) {
savedData.commnet = newComment;
};
var getComment = function(){
return savedData.comment;
};
return {
addComment: addComment,
getComment: getComment
};
});
在控制器中插入工厂/服务
app.controller('fakeController', ['$scope','yourFactory',function ($scope, yourFactory) {
console.log(yourFactory.comment) // here you should log saved comment
}])
然后在控制器中,您可以注入工厂/服务并访问保存的数据。但请记住,当您刷新页面时,数据将丢失,因此,为了避免这种情况,您应该在数据库中保存数据 如果factoryProduct是控制器从工厂创建的实例,那么您是否有任何原因不能执行ng Change=factoryProduct.addComment(commentBox)?我想当你说你在使用工厂时,你的意思是这样的,不熟悉ng变化,从来没有使用过它。但我有一个控制在什么html上使用哪些控制器的路由。我在第1页有ng模型,我需要在第2页得到的值。为此,我尝试将控制器1中的值放入工厂,以便控制器2可以访问它。我认为您只需要类似ng change=“vm.addComment(commentBox)”的内容,其中vm.addComment与yourService.setCurrentComment(newValue)类似。我会返回保存的变量以及需要返回的所有其他内容。我只是不知道如何将作用域值添加到工厂中,以便我的其他控制器可以访问它。感谢您的回复,我的工厂已被注入控制器中。我做了一个简单的简化来缩小我的问题范围。MyCtrl2如何使用工厂获得commentBox的值(如MyCtrl1中的值)?您在小提琴中的哪里使用MyCtrl2?您在哪里定义或使用您的服务?@quality我认为您需要添加一些内容。
app.controller('fakeController', ['$scope','yourFactory',function ($scope, yourFactory) {
console.log(yourFactory.comment) // here you should log saved comment
}])