我是棱角分明的新手。我在两个Html页面中有两个ng-controller。我想将数据从一个控制器共享到另一个控制器。 这是我创建的服务:
int a[3] = { 1, 2, 3 }; // OK at top level
这是controller1:
app.service('sharedProperties', function() {
var stringValue = 'test string value';
var objectValue = {
data: 'test object value'
};
return {
getString: function() {
return stringValue;
},
setString: function(value) {
stringValue = value;
},
getObject: function() {
return objectValue;
}
}
});
这是controller2:
app.controller('FirstCtrl',function($scope,sharedProperties){
sharedProperties.setString("Hi");
});
而不是获取包含字符串'Hi'的警报,而不是'测试字符串值'。
NB。我在两个HTML文件中使用FirstCtrl和SeccondCtrl。在从FristCtrl设置字符串后,我重定向到第二个HTML文件。
答案 0 :(得分:1)
我已创建jsfiddle,但效果很好。
app.controller('FirstCtrl',function($scope,sharedProperties){
$scope.set = function(){
sharedProperties.setString("Hi");
}
});
app.controller('SeccondCtrl',function($scope,sharedProperties){
$scope.get = function(){
window.alert(sharedProperties.getString());
}
});
答案 1 :(得分:0)
我不明白为什么你在返回时设置方法,为什么不在服务上尝试这种方法?无论哪种方式,您都可以将服务设置为主要js中$ scope($ scope.sharedProperties)下的函数,使其成为全局"可用的。
app.service('sharedProperties', function() {
var stringValue = 'test string value';
var objectValue = {
data: 'test object value'
};
this.getString: function() {
return stringValue;
};
this.setString: function(value) {
stringValue = value;
};
this.getObject: function() {
return objectValue;
};
return {
getString: getString,
setString: setString,
getObject: getObject
}
});
答案 2 :(得分:0)
服务有此参考,您可以按照以下
编写服务方法app.service('sharedProperties', function() {
var stringValue = 'test string value';
var objectValue = {
data: 'test object value'
};
this.getString: function() {
return stringValue;
}
this.setString: function(value) {
stringValue = value;
}
this.getObject: function() {
return objectValue;
}
});