Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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$scope.InputModelName未定义_Javascript_Angularjs - Fatal编程技术网

Javascript angularjs$scope.InputModelName未定义

Javascript angularjs$scope.InputModelName未定义,javascript,angularjs,Javascript,Angularjs,我有一个输入字段,试图从中获取值 <!DOCTYPE html> <html ng-app="Application"> <head> <script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.20/angular.min.js"></script> <script> var app = angular.module('Application', []

我有一个输入字段,试图从中获取值

<!DOCTYPE html>
<html ng-app="Application">
<head>
<script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.20/angular.min.js"></script>
<script>
var app = angular.module('Application', []);
app.controller('ApplicationRootController', function ($scope) {
    console.log("[Controller level value - which never come out] $scope.antiForgeryToken_test = " + $scope.antiForgeryToken_test);
    $scope.SubmitFunction = function(){
        console.log("[Value - which come out only after form submitted] $scope.antiForgeryToken_test = " + $scope.antiForgeryToken_test);
    };
});
</script>
</head>

<body>  
    <form id="ApplicationRoot" 
        ng-controller="ApplicationRootController" 
        ng-submit="SubmitFunction()" >

        <button type="submit">Submit</button>

        <div id="AntiForgeryKeyHolder">
            <input 
                id="antiForgeryToken_test" 
                ng-model="antiForgeryToken_test"            
                ng-init="antiForgeryToken_test='PassKey123456789'"
                type="hidden" />
        </div>

    </form> 
</body>
</html>

var app=angular.module('Application',[]);
app.controller('ApplicationRootController',函数($scope){
console.log(“[Controller level value-从未出现]$scope.antiForgeryToken_test=“+$scope.antiForgeryToken_test”);
$scope.SubmitFunction=function(){
console.log(“[Value-仅在表单提交后显示]$scope.antiForgeryToken_test=“+$scope.antiForgeryToken_test”);
};
});
提交
但是我得到的是
未定义的
,所以我尝试使用表单提交,然后值出来了

如何在不提交表单的情况下从这个简单的输入字段中获取值

更新
为什么
console.log
给我
未定义的
,因为提交表单调用时,相同的代码会给我值?

放置在视图中的代码,在放置在js控制器中的代码之后执行。所以当控制器执行并调用线路时

console.log("[Controller level value - which never come out] $scope.antiForgeryToken_test = " + $scope.antiForgeryToken_test);
ng init
在视图中但不工作

为了解决这个问题,你可以使用

这里回调在延迟后执行,因此它可以在
ng init


等待控制器作用域从UI接收ng init数据

var app = angular.module('Application', []);

app.controller('ApplicationRootController', function ($scope, $timeout) {
    $timeout(function(){console.log($scope.antiForgeryToken_test);}, 2000);
});

在我从@Grundy
code-in-view获得大量知识之后-在控制器内部的code之后调用

所以,我试图只在内容完全加载时从控制器触发代码。我的最终解决方案如下

angular.element(document).ready(function () {
        console.log("[Value - After form loaded completly] $scope.antiForgeryToken_test = " + $scope.antiForgeryToken_test);
}); 

我不太明白这个问题。但是您使用的
ng init
是错误的,请参阅文档。如果您想初始化模型的值,您应该在控制器本身中这样做。代码看起来很好,您的问题是什么?就连plunker也工作得很好。@DavidVotrubec,
ng init
也很好。视图中的代码-在控制器中的代码之后调用,所以,您可以使用
setTimeout
和您需要的回调-检查值来执行此技巧:例如,是否有类似
表单完全加载的事件,而不是
setTimeout
?@FrankMyatThu,您可以查看。当然,如果您使用
ng视图
是否有类似
表单完全加载
的事件,而不是
设置超时
签出$viewContentLoaded documentation不建议在控制器中使用jqLite,似乎您尝试解决了另一个问题?为什么不在控制器内部分配这个令牌呢?试试看@Grundy,我的令牌密钥来自
Asp.net Razor服务器端代码。我不确定
控制器js
是否可以执行razor函数
@GetAntiForgeryToken()
。更详细的是,但您可以在全局变量中保存
@GetAntiForgeryToken()
的结果,并使用itor甚至将jqLite中的部分移动到方向。我想知道全局变量方法是否会有所不同,因为首先运行控制器js中的代码。但我真的很想知道如何使用指令而不是jqLite的细节,如果您能指导我,我将非常高兴。
angular.element(document).ready(function () {
        console.log("[Value - After form loaded completly] $scope.antiForgeryToken_test = " + $scope.antiForgeryToken_test);
});