Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.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 我可以在html中初始化一个角度模型,然后在控制器中使用它的值吗?_Javascript_Html_Angularjs_Angular Ngmodel - Fatal编程技术网

Javascript 我可以在html中初始化一个角度模型,然后在控制器中使用它的值吗?

Javascript 我可以在html中初始化一个角度模型,然后在控制器中使用它的值吗?,javascript,html,angularjs,angular-ngmodel,Javascript,Html,Angularjs,Angular Ngmodel,html: 结果: angular.module('myApp', []); angular.module('myApp') .controller('MyController', ['$scope', function ($scope) { console.log("value of var1 is " + $scope.var1); console.log("value of var2 is " + $scope.var2); $scope.var1 = 3; $s

html:

结果:

angular.module('myApp', []);
angular.module('myApp')
    .controller('MyController', ['$scope', function ($scope) {
  console.log("value of var1 is " + $scope.var1);
  console.log("value of var2 is " + $scope.var2);
  $scope.var1 = 3;
  $scope.var2 = 4;
}]);
因此,控制器代码似乎是在计算输入ng模型参数之前运行的。这是有意义的,因为控制器是在输入标记之前宣布的

问题:


有没有办法让控制器逻辑读取并尊重var1和var2的初始值?

您不能将Angular的
ng模型
与常规HTML
属性混用

如果要初始化模型,请在控制器中进行初始化(或使用
ng init
,但不建议这样做)。并从HTML中删除该值

value of var1 is undefined
value of var2 is undefined
[setting values to 3 and 4 displays fine in inputs]

另外,
ng init
是在第一次读取控制器后进行计算的,因此如果您想显示
ng init
中的值,您需要对其执行
$watch
:它在第一次执行控制器时不会出现。

Hm,因此如果我想在服务器端生成html和js时初始化模型,我一定要在js里这样做?就像创建一个返回一些预先生成的json的服务一样?我可以将值放在一个典型的数据属性中,然后使用jquery/jqlite读取它吗?Angular的整个思想是不生成HTML服务器端。您可以使用服务器构建
模型(在控制器中),并让HTML根据该模型进行相应的渲染。这是为了更好地分离关注点:服务器只提供信息,没有显示的概念。@BenjaminWheeler好的,所以我更好地理解您的问题:如果您希望从服务器生成的页面中获得初始值,并且不知何故您不想使用Ajax来实现这一点,您确实可以将它放入一些
数据
属性中,甚至可以保留该
,然后读取它以初始化默认模型。但这有点不方便,并不是我不想使用Ajax,而是我在服务器知道显示哪个项目,但客户端不知道的情况下生成页面。所以,若服务器并没有告诉客户,客户机就不知道该请求哪一项。我想正确的做法是重做URL,使其成为一个实际的角度路由,并在其中包含项目id?
value of var1 is undefined
value of var2 is undefined
[setting values to 3 and 4 displays fine in inputs]
$scope.var1 = 3;
$scope.var2 = 4;