以角度

时间:2015-06-30 18:56:21

标签: javascript angularjs

我在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 + "&nbsp;");       
        }
        $("#userRoleEntry").html(tempRoleArray);
      }

从JS方面工作得很好但是Angular方面并没有认识到&#34; user.role&#34;或&#34; $ scope.user.role&#34;用&#34;未定义&#34;每个人的错误。这是因为这个输入在局部有点不同吗?别的什么?似乎有些问题暗指Angular并没有真正做好这些事情...... 编辑:这不是表单中的唯一输入。其余的已经从API收集或返回。所以不确定我是否可以针对范围进行编译,看起来像是一种矫枉过正的答案。当然,我可能错了。

2 个答案:

答案 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来编译你的元素。