如何在控制器中创建元素?例如点击事件?
示例控制器:
function AddCtrl($scope){
$scope.add = function(){
// do stuff to create a new element?
}
}
示例视图:
<div ng-controller="AddCtrl">
<button ng-click="add()">Add</button>
// create <input type="text" ng-model="form.anotherField">
</div>
任何建议都非常感谢。
发布于 2014-03-27 12:33:12
这是一个经典的错误,来自于jQuery移动到角或任何其他MVC库。您应该考虑的方式是让视图对作用域的更改作出反应。
$scope.items = []
$scope.add = function(){
$scope.items.push({});
}
认为:
<input type="text" ng-repeat="item in items" ng-model="item.property">
发布于 2014-03-27 12:33:13
AngularJS的目的是遵循MVC -因此在视图中创建元素的控制器不符合MVC行为。控制器不应该知道视图的情况。
听起来似乎您希望基于某种条件逻辑显示一个控件。一种方法是绑定到元素的可见性。
发布于 2014-03-27 12:33:27
在角度上,您的控制器不应该直接操作DOM。相反,您应该在模板中描述您需要的元素,然后使用指令控制它们的显示,比如ng开关、ng隐藏/ng显示或ng-if,基于您的模型,即您的数据。
例如,在您的控制器中,您可能会执行如下操作:
$scope.showForm = false;
然后在你的部分:
<div id="myForm" ng-show="showForm">
<!-- Form goes here -->
</div>
通过将$scope.showForm
切换为true和false,您将看到您的myForm div出现并消失。
https://stackoverflow.com/questions/22698494
复制