簡體   English   中英

為什么在AngularJS的$ scope中的ng-init中設置的變量未定義?

[英]Why is the variable set in ng-init undefined in $scope in AngularJS?

我在視圖中使用ng-init設置了一個變量,然后嘗試在控制器中訪問該變量。 但是,當我嘗試訪問它時,得到的是undefined

相關代碼段:

我的看法:

<div ng-controller="MyCtrl">
  <div ng-init="pageTitle = 'kittens'">
  </div>
</div>

我的控制器:

var MyCtrl;

MyCtrl = function($scope) {
  return console.log($scope.pageTitle);
};

JSFiddle

我在這里想念什么?

等待直到變量被初始化。

$scope.$watch('pageTitle', function () {
    console.log($scope.pageTitle); 
});

您還可以利用JavaScript如何定義函數並將函數用於ng-init而不是$ watch( jsfiddle )。

<div ng-app>
    <div ng-controller="MyCtrl" ng-init="pageTitleEquals('kittens')">
        Page title is {{ pageTitle }}
    </div>
</div>

控制器:

var MyCtrl = function($scope) {   
    $scope.pageTitleEquals = function(title) {
        $scope.pageTitle = title;
    }
};

這個問題類似: 如何使用ng-init設置作用域屬性?

在將pageTitle變量添加到$ scope對象之前,已創建控制器。

由於您正在執行“單一時間初始化”,因此像構造函數一樣,建議您在使用變量后取消手表的綁定:

var pageTitleWatch = $scope.$watch('pageTitle', function () {
    console.log($scope.pageTitle);
    // Now just unbind it after doing your logic
    pageTitleWatch();
});

暫無
暫無

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

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