观察由指令设置的控制器$ scope属性

时间:2015-10-22 22:48:19

标签: angularjs angularjs-directive

我有以下指令设置一个绑定到我看的控制器$ 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) {

});

1 个答案:

答案 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: '='
        }
    };
});