我有 - ng-view - 模板创建项目功能和相同的模板,其中包含一个加载已保存项目的指令。
现在,当我确实保存创建项目时,立即保存其项目的清单(来自指令)。
任何人都可以告诉我如何解决这个问题,因此,在保存项目后,立即刷新指令。
注意:指令链接功能正在调用$http
并检索数据并填充在指令模板中。并在其他html模板中添加了指令元素。
html模板:(具有独立的控制器和范围)。
<div>.....code</div>
<div class="col-md-12">
<parts-list></parts-list>
</div>
指令代码:
(function () {
angular.module("application")
.directive("partsList", function (partService) {
return {
templateUrl: 'partsListView.html',
restrict: 'E',
scope: {},
link: function ($scope) {
$scope.partList = [{}];
RetrieveParts = function () {
$scope.partList=partService.RetrieveParts();
};
}
};
});
})();
答案 0 :(得分:0)
在指令中使用isolated scope
:
return {
templateUrl: 'partsListView.html',
restrict: 'E',
scope: {partList: '='},
和template
:
<parts-list partList="list"></parts-list>
其中列表是ui将使用更新数据更新的位置。
查看使用basic Example
的孤立范围答案 1 :(得分:0)
对于初学者,您的ReceiveParts变量没有正确的闭包。还有,你在调用这个功能吗?我不确定这个函数在哪里执行。
tiles;edit=blah
我学到了一个简单的技巧,通过简单地将我需要的逻辑与$ timeout服务同步来执行一些将函数逻辑与angularjs的摘要周期同步的指令连接起来是非常简单的($ timeout只是一个setTimeout调用后跟$ scope。$ apply())。做这个技巧会使你的代码看起来像:
link: function ($scope) {
$scope.partList = [{}];
RetrieveParts = function () {
$scope.partList=partService.RetrieveParts();
};
}
此外,您将注意到在设置partList之后我设置的布尔值。在您的HTML中,您可以对此变量进行ng-if(或ng-show / hide),以便仅在正确解析后显示列表。
我希望这会对你有所帮助。