AngularJS - 这应该去哪里?控制器或链接?

时间:2014-06-19 06:34:10

标签: javascript angularjs

我需要在我的指令中调用$ compile。大多数谈论DOM操作的例子都说这应该在链接函数中完成。

但是,如果我正在观看模型属性,那么我肯定可以使用ng-change并在控制器中处理它?无论如何都都有效。

指令HTML模板:

<div> <div> <select ng-model="myProperty" ng-change="onChange()"> <option value="1">One</option> <option value="2">Two</option> <option value="3">Three</option> </select> </div> <div id="toBeReplaced"></div> </div>

JS指令:

angular.module('myApp')
.directive('myDirective', ['$compile', function ($compile) {
    var markup = '<div>{{ property }}</div>';

    return {
        templateUrl: '/views/template.html',
        restrict: 'A',
        controller: function($scope, $element, $attrs){
            // other controller code that I need.


            $scope.onChange = function(){
                $element.find("#toBeReplaced").html(markup);

                $compile($element.contents())($scope);
            };
        },
        link: function(scope, element, attrs) {
            scope.$watch('myProperty', function(newVal, oldVal){
                if(oldVal !== newVal) {
                    element.find("#toBeReplaced").html(markup);

                    $compile(element.contents())(scope);
                }
            });
        }
    };
}]);

有没有理由不使用控制器解决方案?

0 个答案:

没有答案