为什么不改变指令Angular js中的值?

时间:2017-03-31 08:46:52

标签: angularjs angularjs-directive

我在Angular JS中有简单的指令:

 .directive("statusClass", function() {

        return {
            restrict: 'A',
            scope: {
                'status': '='
            },

            link: function(scope, element, attrs) {


                switch (scope.status) {
                    case "pending":
                    case "Pending":
                        element.addClass('badge-default');
                        break;

                    case "completed":
                        element.addClass('badge-primary');
                        break;
                }

            }
        }
    })

并称之为:

<div status-class status="data.active"></div>

为什么当我在外面更改模型时:$scope.data.active = "go";它不与指令绑定?所以我看不到指令中的chnages

1 个答案:

答案 0 :(得分:1)

你需要使用$watch来监听变量,然后触发函数。

因为链接功能在运行时执行。因此,当您更改指令范围变量时,除非您触发事件(例如函数),否则不会执行它。

 .directive("statusClass", function() {
    return {
        restrict: 'A',
        scope: {
            'status': '='
        },
        link: function(scope, element, attrs) {
            scope.$watch('status', function() {
                switch (scope.status) {
                    case "pending":
                    case "Pending":
                        element.addClass('badge-default');
                        break;
                    case "completed":
                        element.addClass('badge-primary');
                        break;
                }
            })
        }
    }
})