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();
有了这个我访问范围但不能操纵它。以下是我所谈论的一个有关的例子:http://plnkr.co/edit/FScDaj4YDIae8ZEs9ucx?p=preview 任何帮助将不胜感激。
答案 0 :(得分:1)
您的指令可能应该通过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);
}
};
});
参见forked plunk:http://plnkr.co/edit/DZwTgrVNeLIbLXryscPy