Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.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
Html 在控制器之间共享对象不会';我无法使用AngularJS中的服务_Html_Angularjs_Data Binding_Scope_Angular Services - Fatal编程技术网

Html 在控制器之间共享对象不会';我无法使用AngularJS中的服务

Html 在控制器之间共享对象不会';我无法使用AngularJS中的服务,html,angularjs,data-binding,scope,angular-services,Html,Angularjs,Data Binding,Scope,Angular Services,我有一个简单的应用程序,我想共享一个可以由控制器设置的对象,然后从另一个控制器访问它以完成任务,下面是代码: index.html <body ng-app="myApp"> <ui-view></ui-view> <!-- All js files included and working --> <script type="text/javascript" src="angular/angular.

我有一个简单的应用程序,我想共享一个可以由控制器设置的对象,然后从另一个控制器访问它以完成任务,下面是代码:

index.html

    <body ng-app="myApp">
        <ui-view></ui-view>
    <!-- All js files included and working -->
    <script type="text/javascript" src="angular/angular.min.js"></script>
    <script type="text/javascript" src="angular/angular-ui-router.min.js"></script>
    <script type="text/javascript" src="js/myApp.js"></script>
    <script type="text/javascript" src="js/farms.js"></script>
    </body>
farm.html

{{Data.farm}} <!-- this prints {"idFarm":5} -->
<div ui-sref="sau">GO TO SAU</div>
sau.html:

{{Data.farm}} <!-- this prints {"idFarm":""} -->
{{Data.farm}
当我转到farm.html时,我看到该对象显示为
{“idFarm”:5}
,但当我单击我定义的
转到SAU
时,它加载SAU.html,但我得到一个空对象
{“idFarm”:“}
,因为它是在工厂中定义的,所以两个控制器或两个部件之间没有传递数据,
farm.html
&
sau.html


提前感谢您的帮助。

在myFarmController中,您的代码中不使用该服务

试试这个:

app.controller("myFarmController", function($scope, $http, Data) {
  Data.farm.idFarm = 5;
  $scope.Data = Data;
}

在myFarmController中,代码中不使用服务

试试这个:

app.controller("myFarmController", function($scope, $http, Data) {
  Data.farm.idFarm = 5;
  $scope.Data = Data;
}

将对象引用(
Data
service)分配给作用域属性的要点是,它在保存它的所有作用域属性之间共享

你在这里做什么

app.controller("myFarmController", function($scope, $http, Data) {
$scope.Data = {"farm":{"idFarm":5}};
}
正在将新对象分配给
$scope.Data
,它与原始
数据
对象无关。你应该始终坚持

$scope.Data = Data;
Data.farm = ...;
// or $scope.Data.farm = ...;

在作用域之间共享对象的模式。

将对象引用(
数据
服务)分配给作用域属性的要点是,它在持有它的所有作用域属性之间共享

你在这里做什么

app.controller("myFarmController", function($scope, $http, Data) {
$scope.Data = {"farm":{"idFarm":5}};
}
正在将新对象分配给
$scope.Data
,它与原始
数据
对象无关。你应该始终坚持

$scope.Data = Data;
Data.farm = ...;
// or $scope.Data.farm = ...;

模式在作用域之间共享对象。

我现在明白了,非常感谢您的帮助,我希望我也能将此标记为答案。我现在明白了,非常感谢您的帮助,我希望我也能将此标记为答案。