我的HTML中有一个textarea,如下所示:
<textarea ng-model="commentBox"></textarea>
要访问它,我只需在我的控制器中使用“$ scope.commentBox”。但我的问题是,如何在不同的控制器中访问相同的commentBox?
我确实有一个工厂/服务设置用于此目的,但我无法弄清楚如何在那里获取commentBox值,以便我的其他控制器使用它。
在我的工厂里我有一个对象var saved = {}
,我想添加一个名为“comment”的属性,其中包含textarea中的任何值。像这样saved.comment = commentbox
然后从另一个控制器访问该值。
我还是Angular的新手,并试图将参数中的范围信息发送到工厂。
var saved = {};
factory.addComment = function (commentbox) {
saved.comment = commentbox
}
然后让我的控制器通过点击按钮发送范围信息,
$scope.testFunction = function () {
myFactory.addComment($scope.commentBox);
}
但是,这没有成功。
请注意,我需要在工厂内工作,而不是在HTML中使用其他ng-controller。
答案 0 :(得分:1)
您需要在工厂中退回已保存的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
}])
然后在您的控制器中,您可以注入工厂/服务并访问已保存的数据。但请记住,如果您刷新页面,数据将会丢失,因此,为避免这种情况,您应该在数据库上保留数据。