我正在使用autocomplete-directive,如果没有选项与用户输入相匹配,我想切换bool。
这是一个类似于我正在使用的指令:
angular.module('MyModule', []).directive('autoComplete', function($timeout) {
return function(scope, iElement, iAttrs) {
iElement.autocomplete({
source: scope[iAttrs.uiItems],
select: function() {
$timeout(function() {
iElement.trigger('input');
}, 0);
}
});
};
});
具有一些名称和(如果需要)bool的控制器。 我说"如果需要"认为在视图中可能需要bool并且可能在控制器中不需要它?
function DefaultCtrl($scope) {
$scope.names = ["john", "bill", "charlie", "robert", "alban", "oscar", "marie", "celine", "brad", "drew", "rebecca", "michel", "francis", "jean", "paul", "pierre", "nicolas", "alfred", "gerard", "louis", "albert", "edouard", "benoit", "guillaume", "nicolas", "joseph"];
$scope.noMatch = true;
}
观点:
<div ng-app='MyModule'>
<div ng-controller='DefaultCtrl'>
<div ng-show="noMatch">
NoMacth
</div>
<input auto-complete ui-items="names" ng-model="selected">
</div>
</div>
我试图通过执行以下操作来获取指令属性:
{{ auto-complete }}
在视图中,希望它会显示一些内容,但它只会呈现0。
谢谢。
答案 0 :(得分:0)
如果你的指令不使用隔离范围,那么它的范围已经是父控制器的范围,并且指令放在范围内的任何方法和属性都可以在整个视图中访问,就好像它们是正常父控制器范围的一部分,因为它们是。
您引用的指令似乎没有使用范围,因此它没有放置任何值来引用。
这是一个例子。如果您使用这样的指令,那么someProperty
可以在父控制器范围内作为普通{{someProperty}}
angular.module('app.directives.myDirective', [
'myService'
]).directive('myDirective', function (myService) {
return {
restrict: 'AE', // my personal preference
templateUrl: 'directives/myDirectiveView.html', // optional
link: function ($scope, element, attrs) {
$scope.someProperty = 'true';
}
};
});