第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

AngularJS控制器的生命周期是多少?

AngularJS控制器的生命周期是多少?

慕娘9325324 2019-10-05 11:26:36
有人可以澄清一下AngularJS控制器的生命周期是什么嗎?控制器是單例的,還是按需創(chuàng)建/銷毀的?如果是后者,什么觸發(fā)了控制器的創(chuàng)建/銷毀?考慮以下示例:var demoApp = angular.module('demo')  .config(function($routeProvider, $locationProvider) {    $routeProvider      .when('/home', {templateUrl: '/home.html', controller: 'HomeCtrl'})      .when('/users',{templateUrl: '/users.html', controller: 'UsersCtrl'})      .when('/users/:userId', {templateUrl: '/userEditor.html', controller: 'UserEditorCtrl'});  });demoApp.controller('UserEditorCtrl', function($scope, $routeParams, UserResource) {  $scope.user = UserResource.get({id: $routeParams.userId});});例如:在上面的示例中,當我導航到時/users/1,將加載用戶1并將其設(shè)置為$scope。然后,當我導航到時/users/2,將加載用戶2。是相同的UserEditorCtrl重用實例,還是新的實例被創(chuàng)建?如果是新實例,什么觸發(fā)了第一個實例的銷毀?如果重復使用,它如何工作?(即,加載數(shù)據(jù)的方法似乎在創(chuàng)建控制器時運行)
查看完整描述

2 回答

?
POPMUISE

TA貢獻1765條經(jīng)驗 獲得超5個贊

好吧,實際上問題是ngView控制器的生命周期是多少。


控制器不是單例。任何人都可以創(chuàng)建一個新的控制器,并且它們永遠不會被自動銷毀。事實是,它通常與其基礎(chǔ)范圍的生命周期相關(guān)聯(lián)。只要銷毀其范圍,控制器就不會自動銷毀。但是,銷毀基礎(chǔ)作用域后,其控制器就沒有用了(至少在設(shè)計上應該如此)。


在回答您的特定問題時,每次進行導航時,ngView指令(以及ngController指令)總是會創(chuàng)建一個新的控制器和一個新的作用域。而最后的范圍將要毀滅為好。


生命周期“事件”非常簡單。您的“創(chuàng)建事件”是控制器本身的構(gòu)造。只需運行您的代碼。要知道什么時候變得沒用(“破壞事件”),請監(jiān)聽作用域$destroy事件:


$scope.$on('$destroy', function iVeBeenDismissed() {

  // say goodbye to your controller here

  // release resources, cancel request...

})

對于ngView具體情況,你可以當內(nèi)容被通過范圍事件時加載的認識$viewContentLoaded:


$scope.$on('$viewContentLoaded', function readyToTrick() {

  // say hello to your new content here

  // BUT NEVER TOUCHES THE DOM FROM A CONTROLLER

});

這是帶有概念證明的Plunker(打開控制臺窗口)。


查看完整回答
反對 回復 2019-10-05
?
白衣非少年

TA貢獻1155條經(jīng)驗 獲得超0個贊

viewContentLoaded僅在您使用超時時才有效,因為它是在模板加載之前分派的。文檔說的相反,但是template: "HTML STRING"當它是異步加載的模板文件時,它們引用的是raw 。

查看完整回答
反對 回復 2019-10-05
  • 2 回答
  • 0 關(guān)注
  • 850 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號