Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将javascript变量传递到angularJS范围_Javascript_Angularjs - Fatal编程技术网

将javascript变量传递到angularJS范围

将javascript变量传递到angularJS范围,javascript,angularjs,Javascript,Angularjs,因此,我使用MEAN stack创建了一个网页,并使用sessionStorage的HTML5/Javascript变量保存了要在每个页面上携带的用户变量 我们现在正试图通过控制器将该值传递给angularJS。但是,问题是,我们不知道如何在没有用户类型的情况下将其传递到提交文件中。我们尝试将用户名显示为只读,并使用getElementByID设置值,但angularJS不识别新值,而是从旧字段中获取值,即“”,因为文本字段的值一开始是空的,因此用户在angularJS范围中未定义 我们还尝试将

因此,我使用MEAN stack创建了一个网页,并使用sessionStorage的HTML5/Javascript变量保存了要在每个页面上携带的用户变量

我们现在正试图通过控制器将该值传递给angularJS。但是,问题是,我们不知道如何在没有用户类型的情况下将其传递到提交文件中。我们尝试将用户名显示为只读,并使用getElementByID设置值,但angularJS不识别新值,而是从旧字段中获取值,即“”,因为文本字段的值一开始是空的,因此用户在angularJS范围中未定义

我们还尝试将该值作为隐藏范围传递,但也不起作用,因为

有没有办法在ng模型中声明变量? 问题是,任何ng值都使用“”,因此它总是认为该值只是“user”,只是文本“user”,而不是一个变量


任何帮助都将不胜感激

您可能需要使用angularJS$apply()函数,以便获得angularJS以响应更新的值。查看有关$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(); 


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

window.sessionStorage.setItem(“用户名”、“托比”)

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

$scope.username=window.sessionStorage.getItem(“用户名”)
(编辑:这不会将
用户名
绑定到会话存储)

注意:如果要在会话/本地存储中存储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);
    }
);

嘿,伙计,请发布你的代码。@DavidMa请编辑Q添加必要的代码段。如果你发布代码,我可以给出更清楚的答案。嗨,谢谢你的帮助。这是我们的代码:(视图端)(控制器端)我们去掉了控制器端的用户接收器,因为我们昨天不知道如何使用它。很抱歉,我不知道如何在此处复制粘贴代码:/我们对解决方案的简单性感到目瞪口呆。谢谢没有意识到控制器可以访问窗口文件。是的,angular看起来有时会使事情过于复杂,但最终,它只是javascript,你可以用它来做javascript事情!祝你好运
$scope.$watch(
    function(){return window.sessionStorage.getItem("username");},
    function(newVal, oldVal){
        console.log("Username changed from", oldVal, "to", newVal);
    }
);