Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.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 为什么在表单中填充模型后应该跟$scope.$apply?_Javascript_Angularjs - Fatal编程技术网

Javascript 为什么在表单中填充模型后应该跟$scope.$apply?

Javascript 为什么在表单中填充模型后应该跟$scope.$apply?,javascript,angularjs,Javascript,Angularjs,我有一张表格: <form name="placeThis" id="placeThis" novalidate ng-submit="submitForm();"> <input type="hidden" ng-model="placeThis.target"/> </form> 但是,如果我没有添加$scope.$apply或将其包装在$timeout中(这将为我运行$scope.$apply),它将不起作用 我可以毫无问题地从控制器中保存其他

我有一张表格:

<form name="placeThis" id="placeThis" novalidate ng-submit="submitForm();">
    <input type="hidden" ng-model="placeThis.target"/>
</form>
但是,如果我没有添加
$scope.$apply
或将其包装在
$timeout
中(这将为我运行
$scope.$apply
),它将不起作用


我可以毫无问题地从控制器中保存其他$scope值,但是表单中的大多数值都可以写入
$timeout
中,否则在提交时会丢失。为什么会发生这种情况?

我认为您的问题在于表单名称。你可以在这里阅读更多关于角形的内容。它说:

如果指定了name属性,则表单控制器将以此名称发布到当前作用域

所以,不同的对象存储在作用域中的这个名称下。尝试设置不同的表单名称,如下所示:

$scope.placeThis = { target: 0 }
<form name="placeThisForm" id="placeThis" novalidate ng-submit="submitForm();">
    <input type="hidden" ng-model="placeThis.target"/>
</form>
另一种设置初始值的方法是使用ng init


我认为您的问题在于表单名称。你可以在这里阅读更多关于角形的内容。它说:

如果指定了name属性,则表单控制器将以此名称发布到当前作用域

所以,不同的对象存储在作用域中的这个名称下。尝试设置不同的表单名称,如下所示:

$scope.placeThis = { target: 0 }
<form name="placeThisForm" id="placeThis" novalidate ng-submit="submitForm();">
    <input type="hidden" ng-model="placeThis.target"/>
</form>
另一种设置初始值的方法是使用ng init


我认为您的问题在于表单名称。你可以在这里阅读更多关于角形的内容。它说:

如果指定了name属性,则表单控制器将以此名称发布到当前作用域

所以,不同的对象存储在作用域中的这个名称下。尝试设置不同的表单名称,如下所示:

$scope.placeThis = { target: 0 }
<form name="placeThisForm" id="placeThis" novalidate ng-submit="submitForm();">
    <input type="hidden" ng-model="placeThis.target"/>
</form>
另一种设置初始值的方法是使用ng init


我认为您的问题在于表单名称。你可以在这里阅读更多关于角形的内容。它说:

如果指定了name属性,则表单控制器将以此名称发布到当前作用域

所以,不同的对象存储在作用域中的这个名称下。尝试设置不同的表单名称,如下所示:

$scope.placeThis = { target: 0 }
<form name="placeThisForm" id="placeThis" novalidate ng-submit="submitForm();">
    <input type="hidden" ng-model="placeThis.target"/>
</form>
另一种设置初始值的方法是使用ng init


请参见下面的演示

您需要将表单的名称从“placeThis”更改为其他类似“placeThisForm”的名称 否则您将覆盖
$scope。将此
值设置在控制器中

请看下面的演示
var-app=angular.module('app',[]);
应用程序控制器('homeCtrl',函数($scope){
$scope.placeThis={
目标:“一个”,
姓名:“蒂姆”
};
});

目标
名称
请参见下面的演示

您需要将表单的名称从“placeThis”更改为其他类似“placeThisForm”的名称 否则您将覆盖
$scope。将此
值设置在控制器中

请看下面的演示
var-app=angular.module('app',[]);
应用程序控制器('homeCtrl',函数($scope){
$scope.placeThis={
目标:“一个”,
姓名:“蒂姆”
};
});

目标
名称
请参见下面的演示

您需要将表单的名称从“placeThis”更改为其他类似“placeThisForm”的名称 否则您将覆盖
$scope。将此
值设置在控制器中

请看下面的演示
var-app=angular.module('app',[]);
应用程序控制器('homeCtrl',函数($scope){
$scope.placeThis={
目标:“一个”,
姓名:“蒂姆”
};
});

目标
名称
请参见下面的演示

您需要将表单的名称从“placeThis”更改为其他类似“placeThisForm”的名称 否则您将覆盖
$scope。将此
值设置在控制器中

请看下面的演示
var-app=angular.module('app',[]);
应用程序控制器('homeCtrl',函数($scope){
$scope.placeThis={
目标:“一个”,
姓名:“蒂姆”
};
});

目标
名称

$scope.$apply不应是必需的。什么不起作用?这不起作用:。我找到了一个解决方案,我想问为什么需要它。不需要$scope.$apply。什么不起作用?这不起作用:。我找到了一个解决方案,我想问为什么需要它。不需要$scope.$apply。什么不起作用?这不起作用:。我找到了一个解决方案,我想问为什么需要它。不需要$scope.$apply。什么不起作用?这不起作用:。我找到了一个解决方法,我想问为什么需要它。+1关于我的命名错误,你是正确的,但这仍然没有解决我的问题+1关于我的命名错误,你是正确的,但这仍然没有解决我的问题+1关于我的命名错误,你是正确的,但这仍然没有解决我的问题+1关于我的命名错误,你是正确的,但这仍然没有解决我的问题