2013-10-28 105 views
0

我只是不明白爲什麼我的$手錶是不是第二次調用「實體」的更新值。

.directive('myParent', function() { 
    return { 
    controller: function($scope, $log) { 
     $scope.$on('thingChanged', function(e, newVal) { 
     $log.log('thingChanged event hit...'); 
     $scope.$apply(function() { 
      $scope.thing = newVal; 
     }); 
     }); 
    }, 
    template: '<div><div my-child entity="thing" v="{{thing.awesome}}"></div><div my-child2></div></div>' 
    }; 
}) 
.directive('myChild', function($parse, $log) { 
    return { 
    controller: function($scope) { 
    }, 
    scope: { 
     entity: '=', 
     v: '@' 
    }, 
    link: function(scope, element, attrs) { 
     $log.log('v in link:'); 
     $log.log(scope.v); 
     attrs.$observe('v', function(v) { 
     $log.log('v in observe in link:'); 
     $log.log(v); 
     }) 
     $log.log('entity in link:'); 
     $log.log(scope.entity); 
     scope.$watch(scope.entity, function(nv, ov) { 
     $log.log('$watch detected change: '); 
     $log.log(scope.entity); 
     }); 
    }, 
    template: '<span>{{v}}</span>-<span>{{entity}}</span>' 
    }; 
}) 
.directive('myChild2', function($parse, $log, $timeout) { 
    return { 
    controller: function($scope) { 
     var count = 0; 

     $timeout(function() { 
     $scope.$emit('thingChanged', { awesome: 'cool'+count++ }); 
     }, 2000); 
    }, 
    scope: true, 
    link: function(scope, element, attrs) { 
    }, 
    template: '<span><button ng-click="change()"</span>' 
    }; 
}) 

Plunker:http://plnkr.co/edit/2jfa1dcwguO400zRjJxU?p=preview

+0

Plunker被卡住了 –

+0

我是唯一一個在app.js第9行中得到錯誤的)缺失? – bekite

+0

更新了運動員。 – JayPrime2012

回答

2

關注應該是屬性的名稱可以觀看,嘗試scope.$watch("entity", ...,如果你想深表(即對象屬性)與true作爲最後一個參數調用它。

scope.$watch("entity", function() { ... }, true); 
+0

你可以看「實體」或scope.entity。在這裏不需要真實,因爲他取代實體而不是實體的財產。 – bekite

+0

'實體'有效,但scope.entity不起作用。我可以發誓,我看到一個字符串沒有傳遞給$ watch的例子......我很困惑。感謝真正參數的提示。 – JayPrime2012

+0

使scope.entity的工作,你需要通過它像這樣︰scope。$ watch(function(){return scope.entity}, – bekite

相關問題