AngularJS:操纵未知$element的$scope

AngularJS: Manipulate the $scope of an unknown $element

本文关键字:element scope 未知 操纵 AngularJS      更新时间:2023-09-26

Angular的新手。我正在创建一个指令(属性),供整个项目全局使用。我正在使用本地存储函数,我的目的是让属性所在的元素相应地更改其值/文本。这是 HTML:

<input type="email" name="username" placeholder="Email Address" ng-model='username' loadstorage="USERNAME" />

这是指令:

.directive("loadstorage", function (localStorage) {
        return function ($scope, $element, attrs) {
            $scope.$element = localStorage.get(attrs.loadstorage); 
        }
});

可以想象这是行不通的。所以我需要的是一种操作调用函数的元素范围的方法。到目前为止,我尝试的是:

$element.val(localStorage.get(attrs.loadstorage));

它可以工作,但只有当我删除元素的 ng 模型时,不幸的是我需要它用于项目中的其他目的。

angular.element($element).scope();

有了这个,我可以访问范围,但无法操纵它。这是我所说的一个 plunker 示例:http://plnkr.co/edit/FScDaj4YDIae8ZEs9ucx?p=preview任何帮助将不胜感激。

您的指令可能应该通过ngModel控制器(docs)操作该值:

.directive("loadstorage", function (localStorage) {
    return {
        require: ["ngModel"],
        link: function(scope, element, attrs, controllers) {
            var ngModel = controllers[0],
                val = localStorage.get(attrs.loadstorage);
            element.val(val);
            ngModel.$setViewValue(val);
        }
    };
});

参见分叉的 plunk: http://plnkr.co/edit/DZwTgrVNeLIbLXryscPy