如何访问“$scope.search.value”
How to access `$scope.search.value`?
我正在ionic框架下开发一个应用程序。
我在Google上找到了ionic的搜索栏指令,它工作了。
.directive('ionSearch', function() {
return {
restrict: 'E',
replace: true,
scope: {
getData: '&source',
model: '=?',
search: '=?filter'
},
link: function(scope, element, attrs) {
attrs.minLength = attrs.minLength || 0;
scope.placeholder = attrs.placeholder || '';
scope.search = {value: ''};
if (attrs.class)
element.addClass(attrs.class);
if (attrs.source) {
scope.$watch('search.value', function (newValue, oldValue) {
if (newValue.length > attrs.minLength) {
scope.getData({str: newValue}).then(function (results) {
scope.model = results;
});
} else {
scope.model = [];
}
});
}
scope.clearSearch = function() {
scope.search.value = '';
};
},
template: '<div class="item-input-wrapper">' +
'<i class="icon ion-android-search"></i>' +
'<input type="search" placeholder="{{placeholder}}" ng-model="search.value">' +
'<i ng-if="search.value.length > 0" ng-click="clearSearch()" class="icon ion-close"></i>' +
'</div>'
};
})
<ion-content overflow-scroll='true'>
<div class="bar bar-header item-input-inset">
<ion-search class="search-wrapper-light" placeholder="Search..." min-length="1" model="results" source="getExamsByName(str)"></ion-search>
</div>
<div ng-if="exams">
<p>Found {{exams.length}} results </p>
<p>{{search.value|json}}</p>
</div>
<ion-list>
.....
...
</ion-list>
但是我不知道如何访问$scope.search.value
(即输入文本)。
我已经尝试在我的html文件{{search.value}}
,但它显示什么。
任何想法?
你的指令有一个隔离的作用域,也就是说你不能从外部直接访问指令的作用域变量。
幸运的是,search
变量已经被search: '=?filter'
绑定到外部作用域。这意味着,如果你的指令有filter属性,这个变量是双向绑定的。
因此,如果像下面这样增强HTML
<ion-search class="search-wrapper-light" placeholder="Search..." min-length="1" model="results" source="getExamsByName(str)" filter="search"></ion-search>
则外部作用域变量search
将保存指令内部的搜索作用域变量
当您在指令中使用=?filter
时,=
确实意味着您在指令中使用双向数据绑定,但?
可以是可选变量&第三部分是filter
,表示属性名。你应该在你的指令元素中包含filter
属性和一些值,你的控制器也应该有像$scope.search = {}
这样的值定义,所以最初它将是一个对象。
标记
<ion-search class="search-wrapper-light" placeholder="Search..." min-length="1"
model="results" source="getExamsByName(str)" filter="search">
</ion-search>
您已经在隔离作用域中定义了search
属性。不应该是source
吗
相关文章:
- AngularJS:ng之后,重复$scope值未按预期更新
- $ionicplatform内的$scope不;不起作用
- Lucene Search in Alfresco
- 使用$scope方法时的ControllerAs语法
- 如何将ngrepeat下的ngmodel绑定到$scope
- 另一个if(!$scope.$$phase)$scope$apply()szenario-需要帮助才能通关
- 使用AngularJS Directive WHITOUT$scope创建一个动态html元素
- $scope变量被视为字符串AngularJs
- ng在更新$scope后重复不更新信息
- 正在获取Angular以检测$scope中的更改
- 如何惯用地手动销毁scope&在AngularJS中重新创建
- Understanding Javascript scope with "var that = this&qu
- AngularJS,angular.element($0).scope()揭示了每个控制器的函数
- Ng出口无法访问父$scope
- ng选项-用vm替换$scope
- $scope变量,ng隐藏/显示
- 强制 $scope.$watch 只开火一次
- $location.search() - 如何在 $scope.$watch 函数中使用作用域中的参数
- $location.search() 与外部函数一起使用,重置整个$scope.如何避免它
- 如何访问“$scope.search.value”