好的,這是一個複雜的問題,我可能會要求一個不好的方法。如果是這樣的話,請讓我知道。如何通過AngularJS指令在另一個視圖中更改信息?
因此,我有一個導航欄directive
。當有人點擊某些東西時,我設法得到指令來添加一個類並因此加載該欄。 Thanks to StackOverflow。
但現在,我有一個獲取和設置值的服務。當服務中的值發生變化時,我想在視圖中反映這一點。這樣的事情可能嗎?
編輯 澄清,如果我確實使用$apply(function()....
,我該怎麼做?我的觀點有類似的。我的觀點並不侷限於任何特定的控制器或範圍。不知道是否應該。但這裏是我的觀點的一個片段:
<p>
Are you sure you change that song,
<br />
{{ songs[0].title }}
</p>
這裏是我的指令:
angular.module('MyApp')
.directive('navbar', function() {
return {
restrict: 'A',
templateUrl : '/views/partials/nav.html',
controller: function ($scope, ModalService) {
$scope.ms = ModalService;
$scope.songs = {};
$scope.$watch('ms.songs', function(newVal, oldVal) {
if(newVal != null) {
$scope.$apply(function() {
$scope.songs = newVal;
});
}
});
},
如果變量綁定到控制器,你不能$注意從那裏的變化? – trysis
我幾乎是積極的,你不能像你想要做的那樣在服務中看到值。雖然如果它能夠工作,那麼您將需要第三個參數用於$ watch功能,這對於深層觀察來說是「真實的」。 – Sharondio