AngularJS - 根据值初始化表单数据
AngularJS - Initialize form data based on value
我正在尝试向我的应用程序添加编辑功能。在一个视图中,我有一个按钮可以将您带到编辑页面。
<button ng-click="editMission(selectedMission.key)">Edit Mission</button>
值selectedMission.key
用于确定用什么来初始化编辑页面的表单数据。
在控制器中,函数如下所示:
$scope.editMission = function(key){
$location.path('/edit');
}
在编辑页面我有:
<div data-ng-init="editInit()">
在我的控制器中我有:
$scope.editInit = function(){
var query = myDataRef.orderByKey();
query.on("child_added", function(missionSnapshot){
if (missionSnapshot.key()==key){
...
}
});
}
我如何运行 基于editMission
中的键值初始化函数。我应该对全局键变量使用一些 getter/setter 方法吗?我尝试将 editInit
代码放在 editMission
中,但表单数据不会在视图加载时填充。
通常的做法是使用服务在 views/controllers 之间共享变量。
所以在你的情况下,你会像你怀疑的那样使用 getter/setter 方法。我不知道你到底想做什么,但你的服务看起来像这样:
app.factory('missionKeyService', function() {
var currentMission= {};
return {
setMissionKey: function(missionKey) {
currentMission.key = missionKey;
},
getMissionKey: function() {
return currentMission.key;
}
}
})
并且在您的控制器 1 中:
//include 'missionKeyService' in your controller function params
$scope.editMission = function(key) {
missionKeyService.setMissionKey(key);
$location.path('/edit');
}
和控制器2:
//include 'missionKeyService' in your controller function params
$scope.editInit = function() {
var currentKey = missionKeyService.getMissionKey();
//do something with this key
...
}
我正在尝试向我的应用程序添加编辑功能。在一个视图中,我有一个按钮可以将您带到编辑页面。
<button ng-click="editMission(selectedMission.key)">Edit Mission</button>
值selectedMission.key
用于确定用什么来初始化编辑页面的表单数据。
在控制器中,函数如下所示:
$scope.editMission = function(key){
$location.path('/edit');
}
在编辑页面我有:
<div data-ng-init="editInit()">
在我的控制器中我有:
$scope.editInit = function(){
var query = myDataRef.orderByKey();
query.on("child_added", function(missionSnapshot){
if (missionSnapshot.key()==key){
...
}
});
}
我如何运行 基于editMission
中的键值初始化函数。我应该对全局键变量使用一些 getter/setter 方法吗?我尝试将 editInit
代码放在 editMission
中,但表单数据不会在视图加载时填充。
通常的做法是使用服务在 views/controllers 之间共享变量。
所以在你的情况下,你会像你怀疑的那样使用 getter/setter 方法。我不知道你到底想做什么,但你的服务看起来像这样:
app.factory('missionKeyService', function() {
var currentMission= {};
return {
setMissionKey: function(missionKey) {
currentMission.key = missionKey;
},
getMissionKey: function() {
return currentMission.key;
}
}
})
并且在您的控制器 1 中:
//include 'missionKeyService' in your controller function params
$scope.editMission = function(key) {
missionKeyService.setMissionKey(key);
$location.path('/edit');
}
和控制器2:
//include 'missionKeyService' in your controller function params
$scope.editInit = function() {
var currentKey = missionKeyService.getMissionKey();
//do something with this key
...
}