控制器中的ng-repeat用js更改DOM

时间:2017-01-03 14:53:27

标签: angularjs

我有JSON,它存储了一个选项列表。我想在控制器中使用jQuery操作DOM。例如,我在html中有一个<div id="div"></div>,我想要

$scope.options = "options come from JSON";
$('#div').append("<select ng-model='model'><option ng-repeat='opt in options'>{{opt.value}}</option></select>")

在控制器中。当我打开html页面<select></select>标签即将发布但选项为空时。我的问题是如何在控制器中使用ng-repeat循环选项并发送到html页面?谢谢。

3 个答案:

答案 0 :(得分:0)

您应该更喜欢使用Angular ng-options

<select ng-model="model" ng-options="opt.value for opt in options"></select>

作为旁注(尽管此代码可以正常工作),您应该避免对AngularJS应用程序进行DOM操作。它不是JQuery,而且它不是 Angular方式

答案 1 :(得分:0)

请不要在这么简单的示例中进行DOM操作 - 通常,您应该将其保存为指令。只需在你的HTML中直接写下这个:

<div id="div">
  <select ng-model='model'>
    <option ng-repeat='opt in options'>{{opt.value}}</option>
  </select>
</div>

答案 2 :(得分:-2)

可以做这样的事情

//View
<select ng-if="options">
    <option ng-repeat="opt in options">{{opt.value}}</option>
</select>

//Controller
$scope.options = <The JSON object>;