angularjs - 如何在AngularJS中推送新模板,每次都会渲染旧模板
问题描述
我正在尝试将一个新模板推送到我的 DOM 中,但每次我得到我以前的模板的副本。如何推送模板的新副本
$scope.addNew = function (personalDetail) {
$scope.personalDetails.push({
'add_template': '<div my-custom-row-template> </div>',
});
};
$scope.conditions = [];
$scope.conditions.push('myCustomRowTemplate');
$scope.addCondition = function () {
$scope.conditions.push('myCustomRowTemplate');
};
这就是它在 HTML 文件中的呈现方式。
<tr ng-repeat="personalDetail in personalDetails">
<td scope="col">
<input type="checkbox" ng-model="personalDetail.selected"/>
</td>
<td scope="col" class="col-xs-10">
<div ng-repeat="condition_set in conditions track by $index" my-custom-row-template></div>
</td>
</td>
<td scope="col">
<input type="button" value="Add Condition" ng-click="addCondition()"
class="btn btn-primary addnew"/>
</td>
</tr>
解决方案
不确定您要在这里实现什么,所以我可能会离开,但问题是每次调用这些函数时您都在推送一个新模板:
//Calling addNew() - will add to personalDetails array again every click
$scope.addNew = function (personalDetail) {
//You can add:
$scope.personalDetails = [];
$scope.personalDetails.push({
'add_template': '<div my-custom-row-template> </div>',
});
};
//$scope.conditions = []; - move it inside the function
$scope.conditions.push('myCustomRowTemplate');
//Same with this function - each time it is called you are pushing a new condition, you should clear that too
$scope.addCondition = function () {
$scope.conditions = [];
$scope.conditions.push('myCustomRowTemplate');
};
如果你希望这个模板作为“默认”,你应该把它移到这些函数之外,并将它放在一个新函数上,然后用 ng-init 或类似的东西调用它。
编辑:
现在,在我看到这个例子之后,我明白了这个问题——你对条件使用了相同的范围变量,所以它们是重复的。
您应该像这样添加一个属性:
$scope.addNew = function() {
$scope.personalDetails.push({
'add_tempalte': '<div my-custom-row-template> </div>',
});
};
$scope.addCondition = function(personalDetail) {
personalDetail.conditions = personalDetail.conditions||[]; //init new array if needed
personalDetail.conditions.push('myCustomRowTemplate');
};
推荐阅读
- python - cv2 编辑的图像以错误的颜色保存
- javascript - 使用声纳扫描仪在我的反应项目中意外的令牌 =(在模块模式下使用 espree 解析器)
- asp.net-core - 如何在具有 maxAllowedContentLength 的 IIS 上的 ASP.NET Core 中使用 MaxRequestBodySize?
- node.js - 如何在 nodejs 加密库中设置 aes cfb 反馈段大小?
- vb.net - 添加新列后无法访问 DataGridView 列名
- javascript - 检查给定数字是否是另一个小数的倍数
- sql - 跨数据库表减去常量
- sql - 如何使用 Big Query SQL Standard 将日期 YYYY-MM-DD 转换为字符串 YYYYMM?
- docker - 使用奇异性在snakemake中规则:未终止的带引号的字符串
- angular - 如何将 Aria 标签应用于 PrimeNG 组件的子元素?