gpt4 book ai didi

angularjs - 对抗 AngularJS 执行 Controller 两次

转载 作者:行者123 更新时间:2023-12-03 03:54:27 26 4
gpt4 key购买 nike

我知道 AngularJS 会运行某些代码两次,有时甚至更多,例如 $watch 事件,不断检查模型状态等。

但是我的代码:

function MyController($scope, User, local) {

var $scope.User = local.get(); // Get locally save user data

User.get({ id: $scope.User._id.$oid }, function(user) {
$scope.User = new User(user);
local.save($scope.User);
});

//...

执行两次,将 2 条记录插入到我的数据库中。显然我仍在学习,因为多年来我一直在努力解决这个问题!

最佳答案

应用程序路由器指定导航到 MyController,如下所示:

$routeProvider.when('/',
{ templateUrl: 'pages/home.html',
controller: MyController });

但我在 home.html 中也有这个:

<div data-ng-controller="MyController">

这对 Controller 进行了两次消化。从 HTML 中删除 data-ng-controller 属性解决了该问题。或者,可以从路由指令中删除 controller: 属性。

使用选项卡式导航时也会出现此问题。例如,app.js 可能包含:

  .state('tab.reports', {
url: '/reports',
views: {
'tab-reports': {
templateUrl: 'templates/tab-reports.html',
controller: 'ReportsCtrl'
}
}
})

相应的报告选项卡 HTML 可能类似于:

<ion-view view-title="Reports">
<ion-content ng-controller="ReportsCtrl">

这也会导致 Controller 运行两次。

关于angularjs - 对抗 AngularJS 执行 Controller 两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15535336/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com