我在Angular工作,只使用一个普通的旧JS函数,它返回API中的数据列表。然后我将数据转换成这样的单选按钮:
function parseRoles(jsonObj) {
console.log("passed: " + jsonObj);
var tempRoleArray = [];
for (var i = 0; i < jsonObj.role.length; i++) {
tempRoleArray.push("<input type='radio' ng-model='user.role' value='" + jsonObj.role[i].role + "'>" + jsonObj.role[i].description + " ");
}
$("#userRoleEntry").html(tempRoleArray);
}
从JS方面工作得很好但是Angular方面并没有认识到&#34; user.role&#34;或&#34; $ scope.user.role&#34;用&#34;未定义&#34;每个人的错误。这是因为这个输入在局部有点不同吗?别的什么?似乎有些问题暗指Angular并没有真正做好这些事情...... 编辑:这不是表单中的唯一输入。其余的已经从API收集或返回。所以不确定我是否可以针对范围进行编译,看起来像是一种矫枉过正的答案。当然,我可能错了。
答案 0 :(得分:1)
woou,我最好更改API而不是将$compile
添加到您的JS代码中!
API应返回jsonObj
,而您可以轻松地在Angular中构建View。
也不是Angular方式做这样的事情:
$("#userRoleEntry").html(tempRoleArray);
我假设您的JSON看起来像这样:带有Objects的数组。
$scope.roles = [{role: 'test', description: 'text'}]; // your "jsonObj.role"
然后你的HTML应该是这样的:
<div ng-repeat="obj in roles">
<input type="radio" ng-model="user.role" ng-value="obj.role"> {{obj.description}}
</div>
答案 1 :(得分:0)
你需要编译DOM元素才能有角度拾取它。
请参阅doc以获取示例:https://docs.angularjs.org/api/ng/service/$compile
正如@pankajparkar所指出的,你可以dynamic
来编译你的元素。