How to modify scope from within a directive in AngularJs

后端 未结 2 1268
花落未央
花落未央 2020-11-29 07:05

I need to modify a root scope attribute from within a callback inside a directive. But the directive is in a inner scope created by a switch directive.

HTML

2条回答
  •  無奈伤痛
    2020-11-29 08:09

    I updated the fiddle, basically had to go to the parent to get the right "selected" variable, also used the isolate scope = to get two way binding between the value passed in and the internal model.

    http://jsfiddle.net/nJ7FQ/2/

    angular.module('app', [])
    
        .directive("customTag", [function () {
        return {
            restrict: "E",
            replace: true,
            template: "",
            scope: {model:'='},
    
            link: function (scope, element, attrs) {
                element.bind('click', function () {
                    scope.model[attrs.selectedItem] = "New value";
                    scope.$apply();
                });
            }
        };
    }]);
    
    function AppController($scope) {
        $scope.selected = 'Old value';
    }
    

    and the HTML

    Selected: {{ selected }}

    Item: {{ selected }}

    Worked

    Updated the fiddle to use your original reading of the property from the attribute: http://jsfiddle.net/nJ7FQ/4/

提交回复
热议问题