我正在使用angularjs factory设置和获取值,这些是进入mainCtrl
的实时消息我希望在$scope.event
用户搜索日志时获取当前位于searchLogs()
的数据我有数据填充到模态窗口工作,但问题是我一直从mainCtrl
获取数据如何停止绑定一旦我有模态窗口中的数据在某些点我不想获取数据,以便用户可以进行搜索可以在$scope
?
factory.js
angular.module('App').factory('searchFactory', function ($http) {
'use strict';
var logs;
return {
getDitLogs : function () {
return logs;
},
setDitLogs : function (data) {
logs = data;
}
}
});
mainCtrl.js
$scope.searchLogs = function () {
$scope.modalInstance = $uibModal.open({
templateUrl: '/view/modals/searchModal.html',
controller:'SearchController'
});
searchFactory.setDitLogs($scope.event);
}
childCtrl.js
$scope.event = searchFactory.getDitLogs();
console.log(searchFactory.getDitLogs());
main.html中
<div class="col-md-12">
<ul style="list-style: none;">
<li ng-repeat="message in event track by $index"><span><strong>Log:</strong></span><span>{{message}}</span></li>
</ul>
</div>
答案 0 :(得分:1)
$scope.modalInstance
有一个名为opened
的属性,这是一个承诺。
一种方法是等待该承诺得到解决,然后设置一个标志,以便searchFactory.setDitLogs()
不被调用:
$scope.searchLogs = function () {
if(!$scope.doNotSetDit){
$scope.modalInstance = $uibModal.open({
templateUrl: '/view/modals/searchModal.html',
controller:'SearchController'
});
$scope.modelInstance.opened.then(function(){$scope.doNotSetDit =true});
searchFactory.setDitLogs($scope.event);
} }