我在sharing data between controllers上看过egghead.io的视频,但无法让它工作:
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
发布于 2013-06-27 04:38:24
你应该直接使用中间对象和它的属性。
Like this。
发布于 2013-06-27 04:38:53
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'];发布于 2013-06-27 04:41:29
我认为问题的出现是因为您的工厂返回了一个字符串。字符串的行为与js中的对象不同(iirc,当它们被视为对象时,它们被包装成对象,否则它们是原语)。例如
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
https://stackoverflow.com/questions/17329691
复制相似问题