[英]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.