我不确定我应该在标题上加注什么,如果标题令人困惑,请提前抱歉。我对AngularJS也不是很好。
我们说我有一个工厂"用户"它包含一个布尔值"激活"。我有一条"消息"注入"用户"。
的控制器angular.module('message', [])
.controller('message', function($rootScope, $scope, $http, User){
//some functions
...
$scope.message = 'Helloworld';
console.log('In Message Controller');
console.log('debug message, User activated: ' + User.activated);
})
我想在message.html中使用ng-show,例如
<div>
<p>{{message}}</p>
</div>
<div ng-show="User.activated">
<p>Debugging: This only shows up if activated is true</p>
</div>
但是调试信息并没有显示出来。
无论如何我能做到这一点吗?或者,如果我不应该做这样的事情,有人可以建议我另一种方式从&#34;用户&#34;厂 和ng-show一起使用?我想阻止使用$ scope,例如
$scope.activated= function(){
return User.activated;
}
在控制器上,因为这样如果我将来需要再创建几个控制器,我将不得不在控制器中设置$ scope.activated。
答案 0 :(得分:2)
确实,您需要使用该服务。
如果User.activated
字段应在所有控制器中均等执行,则必须使用单例。
如果User.activated
方法取决于控制器中的值,则必须使用服务实例。
jsfiddle上的实例。
angular.module('ExampleApp', ['use', 'ngMessages'])
.controller('ExampleOneController', function($scope, ReuseService) {
//We need do copy, because ReuseService is singleton
$scope.reusable = angular.copy(ReuseService);
$scope.singleton = ReuseService;
})
.controller('ExampleTwoController', function($scope, ReuseService) {
//We need do copy, because ReuseService is singleton
$scope.reusable = angular.copy(ReuseService);
$scope.singleton = ReuseService;
})
.service('ReuseService', function() {
return {
varReuse: 'im not using yet',
imReuseFunction: function(val) {
this.varReuse = val;
}
}
});
和HTML
<div ng-app="ExampleApp">
<div ng-controller="ExampleOneController">
<h3>
ExampleOneController
</h3>
<form name="ExampleForm">
Reusable variable: {{reusable.varReuse}}
<br>Reusable variable singleton: {{singleton.varReuse}}
<br>
<button ng-click="reusable.imReuseFunction('one')">
Reuse me
</button>
<button ng-click="singleton.imReuseFunction('one')">
Reuse me singleton
</button>
</form>
</div>
<hr>
<div ng-controller="ExampleTwoController">
<h3>
ExampleTwoController
</h3>
<form name="ExampleForm">
Reusable variable: {{reusable.varReuse}}
<br>Reusable variable singleton: {{singleton.varReuse}}
<br>
<button ng-click="reusable.imReuseFunction('two')">
Reuse me
</button>
<button ng-click="singleton.imReuseFunction('two')">
Reuse me singleton
</button>
</form>
</div>
</div>
答案 1 :(得分:1)
您可以在$ rootScope中设置已激活,这样每个控制器都可以访问它,如下所示:
在您的控制器中:
<div>
<p>{{message}}</p>
</div>
<div ng-show="$root.user.activated">
<p>Debugging: This only shows up if activated is true</p>
</div>
你的HTML中的
$calendarListNew=new stdClass();
$calendarListNew->items=new stdClass();
$i=1;
foreach ($calendarList['items'] as $key => $value) {
$calendarListNew->items->$i = $calendarList['items'][$key]['id'];
$i++;
}