AngularJS中的.add()与DOM中的.add()有区别吗?
AngularJS中的.add()方法与DOM中的方法有区别吗?我在AngularJS应用程序中使用.add(),将数据推送到firebase时遇到*问题。当我查看文档进行一些研究时,我在AngularJS文档中没有发现关于此方法的任何内容。我发现DOM中的.add()用于向select添加一个选项(例如对象\u of_select.add(option,before);)。但这并不能真正解释我在AngularJS中是如何使用它的 *我遇到的问题是: 我对Firebase和持久化数据没有任何问题,它非常简单和令人敬畏。然而,当我获取一个对象(在本例中为“活动”)并将对象推入嵌套的对象数组(“策略”)时,我遇到了问题。第二次添加本地数据时,我无法再将该数据“添加”到Firebase。没有错误,什么都没有 因此,如果有人能给我指出正确的方向,那就太棒了 模板AngularJS中的.add()与DOM中的.add()有区别吗?,dom,angularjs,firebase,angularfire,Dom,Angularjs,Firebase,Angularfire,AngularJS中的.add()方法与DOM中的方法有区别吗?我在AngularJS应用程序中使用.add(),将数据推送到firebase时遇到*问题。当我查看文档进行一些研究时,我在AngularJS文档中没有发现关于此方法的任何内容。我发现DOM中的.add()用于向select添加一个选项(例如对象\u of_select.add(option,before);)。但这并不能真正解释我在AngularJS中是如何使用它的 *我遇到的问题是: 我对Firebase和持久化数据没有任何问题
<!-- TITLE THE CAMPAIGN -->
<h3>{{campaign.name}}</h3>
<input type="text" placeholder="Campaign Title" ng-model="campaign.name"/>
<!-- LOOP THROUGH TACTICS -->
<div class="well well-lg" ng-repeat="foo in campaign.tactics">
<h4>{{foo.name}} - {{foo.type}}</h4>
</div>
<!-- SELECT TACTIC TYPE (Loaded from separate Firebase instance)-->
<select ng-model="tacticSelect">
<option ng-repeat="tactic in tactics" value="{{tactic.name}}">{{tactic.name}} ({{tactic.type}})</option>
</select>
<!-- PUSH NEW TACTICS INTO TACTIC LOOP -->
<button class="btn" ng-click="campaign.tactics.push({'name': tacticSelect, 'type': 'email'})"><span class="glyphicon glyphicon-plus" ></span> Add Tactic</button>
<!-- SAVE CAMPAIGN TO CAMPAIGNS FIREBASE -->
<button class="btn btn-success" ng-click="campaigns.add(campaign)"></span> Save</button><!-- ng-click="campaigns.add(campaign)"-->
所需的数据结构(我正在尝试创建可以在单个战役中使用多种战术的战役。)
add
既不是角度方法,也不是DOM方法。这是angularFireCollection提供的一种方法。angularFireCollection显式同步数据,这意味着调用$scope.campaits.tractics.push
不足以将数据发送到Firebase
你基本上有两个选择。您可以使用angularFire
服务,该服务将在数据发生本地更改时自动同步数据
控制器
function scopeAssignments($scope, angularFireCollection, $location){
$scope.tactics = angularFireCollection(fbTactics);
$scope.campaigns = angularFireCollection(fbCampaigns);
// SAMPLE DATA SET
$scope.campaign = {"tactics" : []};
}
function scopeAssignments($scope, angularFire){
$scope.tactics = angularFire(fbTactics);
$scope.campaigns = angularFire(fbCampaigns);
$scope.campaign = $scope.campaigns[campaignID];
$scope.campaign.tactics = [];
}
$scope.addTactic = function(campaign, tactic) {
$scope.campaign.tactics.push({'name': tacticSelect, 'type': 'email'});
$scope.campaigns.update($scope.campaign);
}
如果要坚持使用angularFireCollection,则必须在希望将某些数据发送到Firebase服务器时明确通知集合。例如,您可以通过以下方式执行此操作:
模板
<!-- TITLE THE CAMPAIGN -->
<h3>{{campaign.name}}</h3>
<input type="text" placeholder="Campaign Title" ng-model="campaign.name"/>
<!-- LOOP THROUGH TACTICS -->
<div class="well well-lg" ng-repeat="foo in campaign.tactics">
<h4>{{foo.name}} - {{foo.type}}</h4>
</div>
<!-- SELECT TACTIC TYPE (Loaded from separate Firebase instance)-->
<select ng-model="tacticSelect">
<option ng-repeat="tactic in tactics" value="{{tactic.name}}">{{tactic.name}} ({{tactic.type}})</option>
</select>
<!-- PUSH NEW TACTICS INTO TACTIC LOOP -->
<button class="btn" ng-click="campaign.tactics.push({'name': tacticSelect, 'type': 'email'})"><span class="glyphicon glyphicon-plus" ></span> Add Tactic</button>
<!-- SAVE CAMPAIGN TO CAMPAIGNS FIREBASE -->
<button class="btn btn-success" ng-click="campaigns.add(campaign)"></span> Save</button><!-- ng-click="campaigns.add(campaign)"-->
添加策略
控制器
function scopeAssignments($scope, angularFireCollection, $location){
$scope.tactics = angularFireCollection(fbTactics);
$scope.campaigns = angularFireCollection(fbCampaigns);
// SAMPLE DATA SET
$scope.campaign = {"tactics" : []};
}
function scopeAssignments($scope, angularFire){
$scope.tactics = angularFire(fbTactics);
$scope.campaigns = angularFire(fbCampaigns);
$scope.campaign = $scope.campaigns[campaignID];
$scope.campaign.tactics = [];
}
$scope.addTactic = function(campaign, tactic) {
$scope.campaign.tactics.push({'name': tacticSelect, 'type': 'email'});
$scope.campaigns.update($scope.campaign);
}
add
既不是角度方法,也不是DOM方法。这是angularFireCollection提供的一种方法。angularFireCollection显式同步数据,这意味着调用$scope.campaits.tractics.push
不足以将数据发送到Firebase
你基本上有两个选择。您可以使用angularFire
服务,该服务将在数据发生本地更改时自动同步数据
控制器
function scopeAssignments($scope, angularFireCollection, $location){
$scope.tactics = angularFireCollection(fbTactics);
$scope.campaigns = angularFireCollection(fbCampaigns);
// SAMPLE DATA SET
$scope.campaign = {"tactics" : []};
}
function scopeAssignments($scope, angularFire){
$scope.tactics = angularFire(fbTactics);
$scope.campaigns = angularFire(fbCampaigns);
$scope.campaign = $scope.campaigns[campaignID];
$scope.campaign.tactics = [];
}
$scope.addTactic = function(campaign, tactic) {
$scope.campaign.tactics.push({'name': tacticSelect, 'type': 'email'});
$scope.campaigns.update($scope.campaign);
}
如果要坚持使用angularFireCollection,则必须在希望将某些数据发送到Firebase服务器时明确通知集合。例如,您可以通过以下方式执行此操作:
模板
<!-- TITLE THE CAMPAIGN -->
<h3>{{campaign.name}}</h3>
<input type="text" placeholder="Campaign Title" ng-model="campaign.name"/>
<!-- LOOP THROUGH TACTICS -->
<div class="well well-lg" ng-repeat="foo in campaign.tactics">
<h4>{{foo.name}} - {{foo.type}}</h4>
</div>
<!-- SELECT TACTIC TYPE (Loaded from separate Firebase instance)-->
<select ng-model="tacticSelect">
<option ng-repeat="tactic in tactics" value="{{tactic.name}}">{{tactic.name}} ({{tactic.type}})</option>
</select>
<!-- PUSH NEW TACTICS INTO TACTIC LOOP -->
<button class="btn" ng-click="campaign.tactics.push({'name': tacticSelect, 'type': 'email'})"><span class="glyphicon glyphicon-plus" ></span> Add Tactic</button>
<!-- SAVE CAMPAIGN TO CAMPAIGNS FIREBASE -->
<button class="btn btn-success" ng-click="campaigns.add(campaign)"></span> Save</button><!-- ng-click="campaigns.add(campaign)"-->
添加策略
控制器
function scopeAssignments($scope, angularFireCollection, $location){
$scope.tactics = angularFireCollection(fbTactics);
$scope.campaigns = angularFireCollection(fbCampaigns);
// SAMPLE DATA SET
$scope.campaign = {"tactics" : []};
}
function scopeAssignments($scope, angularFire){
$scope.tactics = angularFire(fbTactics);
$scope.campaigns = angularFire(fbCampaigns);
$scope.campaign = $scope.campaigns[campaignID];
$scope.campaign.tactics = [];
}
$scope.addTactic = function(campaign, tactic) {
$scope.campaign.tactics.push({'name': tacticSelect, 'type': 'email'});
$scope.campaigns.update($scope.campaign);
}
阿南特,首先谢谢你回复我。您为使用Firebase平台的开发人员提供反馈和帮助的努力不仅对您本人,而且对Firebase公司也有很大的影响。其他公司/项目应予以注意。关于你的回答。当你说这是一种自动对焦的方法时,我终于弄明白了。当我意识到正在使用“表面下推”时,我对我的模式进行了一些调整以适应这种情况。最好能举一些例子,并将它们添加到文档中。再次感谢!谢谢你的好话!我将在angularFire问题列表中添加一项,以确保我们更好地记录这一点。很高兴你能成功。阿南特,首先谢谢你回复我。您为使用Firebase平台的开发人员提供反馈和帮助的努力不仅对您本人,而且对Firebase公司也有很大的影响。其他公司/项目应予以注意。关于你的回答。当你说这是一种自动对焦的方法时,我终于弄明白了。当我意识到正在使用“表面下推”时,我对我的模式进行了一些调整以适应这种情况。最好能举一些例子,并将它们添加到文档中。再次感谢!谢谢你的好话!我将在angularFire问题列表中添加一项,以确保我们更好地记录这一点。很高兴你能成功。