簡體   English   中英

使用init()調用或ng-init初始化數據?

[英]Initialize data with init() call or ng-init?

在我的AngularJS應用中,我必須在加載時初始化一些值。

我在這種情況下編寫了一個函數init()

function init() {
    this.var = 'example';
}

在我的JS腳本末尾或使用ng-init屬性調用init函數更好嗎?

解決方案1

/* script.js */
function init() { /* instructions */ }
init();

解決方案2

/* script.js */
function init(){ // instructions // }}
// Not calling init() here

<!-- file.html -->
<div ng-controller="exampleCtrl as example" ng-init="example.init()">

如果這將初始化一些值以准備使用它們的頁面,那么您將使用控制器,對嗎? 所以為此使用內置方法$ onInit() ...

$onInit() {
  $scope.foo = 'some value';
  // Initialise other variables;
}

AngularJS 1.5中為組件控制器添加了$ onInit() ,但它可用於所有控制器。

ngInit文檔

可以濫用此指令在模板中添加不必要的邏輯量 ngInit只有少數適​​當的用法,例如別名ngRepeat的特殊屬性,如下面的演示所示; 以及通過服務器端腳本注入數據。 除了這幾種情況, 您應該使用控制器而不是ngInit來初始化scope上的值

因此,當您有選擇時,始終希望在控制器中進行初始化:解決方案1更好。


更廣泛地說,就關注點分離而言,我建議您在控制器中編寫邏輯。 如果您有多個控制器使用的通用代碼部分,請將其移至服務。 這在成長時將大大簡化應用程序的可維護性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM