我已经意识到在SO上已经存在类似的问题,但我无法找到解决问题的方法。
我有以下指令,它提取光标所留下的输入框的键和值(模糊):
.directive('updateOneField', function() {
return {
restrict: 'A',
scope: [],
link: function(scope, element, attr) {
element.bind('blur', function() {
var key = attr.ngModel.split('.');
key = key[key.length - 1];
// Get the input value
var value = element[0].value;
});
}
};
});
这可能会在多个控制器中使用,所以我的问题是如何从任何控制器访问key
和value
值?
答案 0 :(得分:0)
如果我理解正确,最正确的角度方式&#34>,您正试图访问ngModel的值。这样做是在你的指令中要求ngModelController,如此;
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, element, attrs, ngModelCtrl) {
element.bind('blur', function() {
var model = ngModelCtrl.$modelValue;
});
}
};
您可以找到有关ngModelController here
的更多信息答案 1 :(得分:0)
是的,您可以将控制器范围变量传递给您的指令,并使用此变量来访问指令中的值。
示例强>
<input type="text" update-one-field my-scope="myVariable" />
此处,myVariable
是您的控制器变量。
$scope.myVariable = {};
现在,像这样更新你的指令,
.directive('updateOneField', function() {
return {
restrict: 'A',
scope: {
myScope: '='
},
link: function(scope, element, attr) {
element.bind('blur', function() {
var key = attr.ngModel.split('.');
key = key[key.length - 1];
// Get the input value
var value = element[0].value;
// Assign key and value to controller variable
scope.myScope = {};
scope.myScope.Key = key;
scope.myScope.Value = value;
});
}
};
});
现在,您可以从控制器访问key & value
,就像
// Code inside your controller
$scope.myVariable.Key; // Get key from the directive
$scope.myVariable.Value; // Get value from the directive
希望这会有所帮助。如果您对此有任何疑问,请随时添加评论。
答案 2 :(得分:0)
指令声明中有拼写错误:
.directive('updateOneField', function() {
return {
restrict: 'A',
// her -------------------------------> scope: [],
scope : {},
link: function(scope, element, attr) {
element.bind('blur', function() {
var key = attr.ngModel.split('.');
key = key[key.length - 1];
// Get the input value
var value = element[0].value;
});
}
};
});