首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在AngularJS控制器之间共享数据?

无法在AngularJS控制器之间共享数据?
EN

Stack Overflow用户
提问于 2013-06-27 04:20:15
回答 4查看 291关注 0票数 0

我在sharing data between controllers上看过egghead.io的视频,但无法让它工作:

代码语言:javascript
复制
var myApp = angular.module('myApp', []);

myApp.factory('QData', function () {
    return 'hello'
});

function QCtrl($scope, $http, QData) {
  $scope.foo = QData;
}

QCtrl.$inject = ['$scope', '$http', 'QData'];

function YCtrl($scope, $http, QData) {
  $scope.bar = QData;
}

YCtrl.$inject = ['$scope', '$http', 'QData'];

查看代码(带有额外的引导视图) running on Plnkr

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-06-27 04:38:24

你应该直接使用中间对象和它的属性。

Like this

票数 0
EN

Stack Overflow用户

发布于 2013-06-27 04:38:53

代码语言:javascript
复制
var myApp = angular.module('myApp', []);

myApp.factory('QData', function () {
    return 'hello' 
});

function ParentCtrl($scope, $http, QData) {   
    $scope.foo = 'My data'; 
}

QCtrl.$inject = ['$scope', '$http', 'QData'];

function QCtrl($scope, $http, QData) {  }

QCtrl.$inject = ['$scope', '$http', 'QData'];

function YCtrl($scope, $http, QData) { }

YCtrl.$inject = ['$scope', '$http', 'QData'];
票数 0
EN

Stack Overflow用户

发布于 2013-06-27 04:41:29

我认为问题的出现是因为您的工厂返回了一个字符串。字符串的行为与js中的对象不同(iirc,当它们被视为对象时,它们被包装成对象,否则它们是原语)。例如

代码语言:javascript
复制
var a = 'hello';
var b = a;
a.x = 1;
console.log(b.x) //undefined

var a = {x: 1}; var b=a; a.y = 1; console.log(b.y); //1

基本上,如果使用对象会更好,就像下面这样:http://plnkr.co/edit/zqCPn9?p=preview

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17329691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档