Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS-在控制器之间共享作用域值_Javascript_Html_Angularjs - Fatal编程技术网

Javascript AngularJS-在控制器之间共享作用域值

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

我的HTML中有一个文本区域,如下所示:

<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

}])