Angularjs 未呈现从AJAX调用结算和加载的范围变量
我正在尝试使用Angular加载表单,并执行以下过程:Angularjs 未呈现从AJAX调用结算和加载的范围变量,angularjs,Angularjs,我正在尝试使用Angular加载表单,并执行以下过程: 从PHP脚本加载值 加载必须在其上呈现值的模板 HTML <form ng-controller="formularCtrl" ng-init="initForm()"> <div ng-bind-html='form.template | unsafe'></div> </form> PHP $form = new StdClass(); $form->name->id
<form ng-controller="formularCtrl" ng-init="initForm()">
<div ng-bind-html='form.template | unsafe'></div>
</form>
PHP
$form = new StdClass();
$form->name->id = 'name';
$form->name->type = 'text';
$form->name->value = 'Test';
echo json_encode($form);
// {"name": {"id":"name", "type":"text", "value":"Test"}}
模板
<input
type="{{form.content.name.type}}"
id="{{form.content.name.id}}"
value="{{form.content.name.value}}" />
但是这些值没有在HTML中呈现,结果是输入的内部是{{form.content.name.value}
,而不是“Test”
我还不习惯使用scope,但在AJAX调用期间或之后,我尝试了$scope.$apply()
,但没有成功(而且绝对没有改变)
(我还尝试加载模板,然后加载值,仍然不起作用。)在Ajax成功函数中,执行$scope.$apply(函数(){$scope.form.template=data;}) 你试过使用模板吗?试着从中找到答案。这基本上就是您想要实现的。@MateuszKocz正是我所需要的,谢谢为了避免摘要错误,将$scope.$apply()包装在$timeout中,延迟为0。这将在摘要完成后将操作放入队列。您需要将$timeout注入控制器$超时(函数(){$scope.$apply(…);},0);
<input
type="{{form.content.name.type}}"
id="{{form.content.name.id}}"
value="{{form.content.name.value}}" />
console.log($scope.form.content.name.value); // Test