我有以下指令设置一个绑定到我看的控制器$ scope属性的属性。问题是观察者永远不会触发,我在徘徊为什么。
更新!
解决方案
经过多次挖掘后,我发现Jim Hoskins关于$ scope的这篇很酷的文章。$ apply()解决了我的问题。
http://jimhoskins.com/2012/12/17/angularjs-and-apply.html
mod.directive('gsGridSorting', function($modal, $timeout) {
return {
restrict: 'A',
link: function($scope, $element, $attrs) {
var lastSortedCol;
$element.on('click', 'th.sorting', function (event) {
var target = $(event.target);
//The missing piece!
$scope.$apply(function () {
$scope.sortColumn = target.data('column');
})
});
},
scope: {
sortColumn: '='
}
};
});
<thead gs-grid-sorting sort-column="sortColumn"> ... </thead>
观看我的$ scope属性但没有成功。
$scope.$watch('sortColumn', function (oldValue, newValue) {
});
答案 0 :(得分:0)
我认为您可以使用$watch
功能相同的代码:
mod.directive('gsGridSorting', function($modal, $timeout) {
return {
restrict: 'A',
link: function($scope, $element, $attrs) {
var lastSortedCol;
$element.on('click', 'th.sorting', function (event) {
var target = $(event.target);
$attrs.sortColumn = target.data('column');
});
$scope.$watch (function(){
return $attrs.sortColumn;
},function(oldValue,newValue){
console.log(newValue);
});
},
scope: {
sortColumn: '='
}
};
});