簡體   English   中英

將JavaScript變量傳遞給angularJS范圍

[英]Passing a javascript variable into a angularJS scope

因此,我使用MEAN堆棧創建了一個網頁,並使用sessionStorage的HTML5 / Javascript變量保存了要在每個頁面上攜帶的用戶變量。

現在,我們正在嘗試將此值通過控制器傳遞給angularJS。 問題是,但是,如果用戶沒有輸入值,我們不知道如何將其傳遞到提交文件中。 我們嘗試將用戶名顯示為只讀,並使用getElementByID設置值,但是angularJS無法識別新值,而是從舊字段(即“”)獲取值,因為文本字段的值開頭,因此在angularJS范圍內未定義用戶。

我們還嘗試將值作為隱藏范圍傳遞,這也不起作用,因為角度

有沒有一種方法可以在ng-model中聲明變量? 問題是任何ng值都使用“”,因此始終認為該值只是“ user”只是文本“ user”,而不是變量。

任何幫助,將不勝感激

如果您已將用戶名保存到sessionStorage中,如下所示:

window.sessionStorage.setItem("username","toby");

然后,在angular控制器中,您可以:

$scope.username = window.sessionStorage.getItem("username"); (編輯:這不會將username綁定到會話存儲)

注意:如果要將JSON存儲在會話/本地存儲中,則應事先使其為JSON:

window.sessionStorage.setItem("userObject", JSON.stringify(userObject));

並檢索:

var userObject = JSON.parse(window.sessionStorage.getItem("userObject"));

如果要觀看會話存儲,可以使用$watch

$scope.$watch(
    function(){return window.sessionStorage.getItem("username");},
    function(newVal, oldVal){
        console.log("Username changed from", oldVal, "to", newVal);
    }
);

您可能需要使用angularJS $ apply()函數才能使angular響應更新后的值。 在$ apply()上查看這篇有用的文章。 當您對Angular不了解的模型進行更改時,您需要調用$ apply()(例如,在$ http調用之外,Angular將自動對其進行$ apply()調用)。 您應該將函數包裝在$ apply()調用中,即

$scope.$apply(function(var) {
    etc.
}

另外,要在控制器中將值放入模型中(假設您使用的是MVC框架),則需要在控制器內部聲明一個模型變量。 例如,您可能有一個開始的控制器:

.controller("exampleCtrl", function($scope) {
    $scope.model = model;
}

然后,您可以通過調用以下命令在模型中創建/更新值

$scope.model.VALUENAME = whatever value

希望這會有所幫助!

這為我工作:

// in the javascript only section call an angular method to update the data when OnClick, OnChange, etc....

angular.element(document.getElementById('YourElementId')).scope().update_your_value(); 

//inside the angular controller

$scope.update_your_value =  function(){
    $scope.your_model.value        = $('#YourElementId').val(); //  or document.getElementById('YourElementId')).value
    $scope.$apply();
}

暫無
暫無

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

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