单击时重新加载模型
Reload Model On ng-click
这是我的HTML代码:
<html ng-app="myApp">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Angular App</title>
<script type="text/javascript" src="resources/angularJs-1.2.22/angular.js"></script>
<script type="text/javascript" src="resources/angularJs-1.2.22/angular-animate.js"></script>
<script type="text/javascript" src="resources/angularJs-1.2.22/angular-cookies.js"></script>
<script type="text/javascript" src="resources/angularJs-1.2.22/angular-mocks.js"></script>
<script type="text/javascript" src="resources/angularJs-1.2.22/angular-resource.js"></script>
<script type="text/javascript" src="resources/angularJs-1.2.22/angular-route.js"></script>
<script type="text/javascript" src="resources/angularJs-1.2.22/angular-sanitize.js"></script>
<script type="text/javascript" src="resources/angularJs-1.2.22/angular-touch.js"></script>
<script type="text/javascript" src="resources/angularJs-1.2.22/i18n/angular-locale_fr-fr.js"></script>
<script type="text/javascript" src="js/app.js"></script>
<script type="text/javascript" src="js/controllers/controller.js"></script>
<script type="text/javascript" src="js/directives/directive.js"></script>
<script type="text/javascript" src="js/filters/filter.js"></script>
<script type="text/javascript" src="js/services/service.js"></script>
<!-- flatUI -->
<!-- Loading Bootstrap -->
<link href="resources/flatUI/bootstrap/css/bootstrap.css" rel="stylesheet">
<link href="resources/flatUI/bootstrap/css/prettify.css" rel="stylesheet">
<!-- Loading Flat UI -->
<link href="resources/flatUI/css/flat-ui.css" rel="stylesheet">
<link href="resources/flatUI/css/docs.css" rel="stylesheet">
<link rel="stylesheet" href="css/style.css">
</head>
<body ng-controller="defaultController">
<table class="table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Price</th>
</tr>
</thead>
<tbody>
<tr simple-repeater source="products" item-name="item">
<td>{{item.name}}</td>
<td>{{item.price | currency}}</td>
</tr>
</tbody>
</table>
<button class="btn btn-default text" ng-click="changeData()">Change</button>
</body>
</html>
这是我的控制器:
app.controller("defaultController", function($scope)
{
$scope.dataSource= "controller";
$scope.products = [{ name: "Apples", price: 1.20 },
{ name: "Bananas", price: 2.42 },
{ name: "Pears", price: 2.02 }];
$scope.changeData = function()
{
var data = [{ name: "Apples1", price: 1.20 },
{ name: "Bananas1", price: 2.42 },
{ name: "Pears1", price: 2.02 }];
$scope.products.length = 0;
for (var i = 0; i < data.length; i++)
{
$scope.products.push(data[i]);
}
}
})
这是我的指示:
app.directive("simpleRepeater", function()
{
return {
scope: {
data: "=source",
propName: "@itemName"
},
transclude: 'element',
compile: function(element, attrs, transcludeFn)
{
return function($scope, $element, $attr)
{
$scope.$watch("data.length", function()
{
var parent = $element.parent();
parent.children().remove();
for (var i = 0; i < $scope.data.length; i++)
{
var childScope = $scope.$new();
childScope[$scope.propName] = $scope.data[i];
transcludeFn(childScope, function(clone)
{
parent.append(clone);
})
}
})
}
}
}
})
我所要做的就是点击后重新加载我的模型,即所有旧数据都必须删除,新数据必须加载,有人能告诉我我到底哪里出了问题吗,因为新数据没有在视图中更新,如果有任何帮助,我们将不胜感激,谢谢。
使用$watchCollection
而不是$watch
。如果您的数组没有更改长度,则需要检测其内容的更改。所以你们需要观察数组本身,而不仅仅是长度:
$scope.$watchCollection("data", function () {
var parent = $element.parent();
parent.children().remove();
for (var i = 0; i < $scope.data.length; i++) {
var childScope = $scope.$new();
childScope[$scope.propName] = $scope.data[i];
transcludeFn(childScope, function (clone) {
parent.append(clone);
});
}
});
演示:http://plnkr.co/edit/6mbHQhLldf28BnFVaQu1?p=preview
相关文章:
- 延迟 AngularJS 路由更改,直到加载模型以防止闪烁
- 加载模型与三个.js
- Three.js隐藏已加载模型的对象
- Javascript客户端从ASP.NET MVC后端延迟加载模型
- 如何在三.js中加载 .x 模型
- 如何将内置选项卡与没有路由的 ember 集成,以便为每个选项卡异步加载模型
- 三.js 加载模型时进度加载器不隐藏
- Angularjs:如何在惰性模式下加载模型
- WebGL显示不带矩阵的加载模型
- 单击时重新加载模型
- Ember 2.0路由器不加载模型数据
- 转换到路线后重新加载模型
- 在three.js中加载模型的最简单方法
- 在AngularJS中加载模型并渲染内容后执行函数
- 下划线模板不加载模型.% console.log(Model.id) %>它是未定义的
- 如何在主干视图中加载模型集合
- 从MEAN.IO中的其他包加载模型
- MVC淘汰.儿童下载列表没有't第一时间加载模型数据
- 在模态中加载模型只工作一次
- 烬路线在错误加载模型后卡住