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关于我的命名错误,你是正确的,但这仍然没有解决我的问题