我是angularjs的新手,我正在学习指令,我正在尝试将值传递给指令,但事情没有用。
html
<genericsearch objectType="tei_org" organisationSearch="organisationSearchEvent"></genericsearch>
指令
directive('genericsearch', [function () {
return {
restrict: 'E',
replace: true,
scope: {
objectType : '=',
},
controller: ['$scope','$element','$rootScope','SearchOrg','MapOrgs','$routeParams','DelOrgs','GetTemplateGroups','FetchOrgs', function($scope,$element,$rootScope,SearchOrg,MapOrgs,$routeParams,DelOrgs,GetTemplateGroups,FetchOrgs){
$scope.getOrgs = function(objectType, event) {
if(event.keyCode != 13){
//$scope.Participants(data);
$scope.organisationSearchEvent(objectType);
}
}
$scope.organisationSearchEvent = function(filter,objectType){
SearchOrg().fetch({'filter':filter, 'searchType':objectType}).$promise.then(
function(value){
$scope.orgList = value.data;
},
function(err){
});
}
}],
templateUrl : TAPPLENT_CONFIG.HTML_ENDPOINT[0]+'home/search.html'
}
}])
答案 0 :(得分:0)
您似乎误解了$ scope和/或如何将值传递给函数。
您的控制器的$ scope具有属性objectType
。您不需要将此作为参数添加到控制器内的函数中。
相反,您只需通过$scope.objectType
访问它。
E.g。
$scope.organisationSearchEvent = function(filter){
SearchOrg().fetch({'filter':filter, 'searchType':$scope.objectType}).$promise.then(
function(value){
$scope.orgList = value.data;
},
function(err){
});
}
答案 1 :(得分:0)
为此,您可以在指令控制器中使用链接功能。
<强> HTML 强>
<genericsearch objectType="tei_org" organisationSearch="organisationSearchEvent"></genericsearch>
<强>指令强>
link:function(scope,elem,attrs) {
scope.myParam = attrs.organisationSearch;
}
之后,您可以通过范围访问控制器中的myParam
答案 2 :(得分:-1)
这是您使用链接并将其传递给控制器的地方。
HTML:
<my-fancy-directive my-attribute="something"></my-fancy-directive>
使用Javascript:
app.directive('myFancyDirective', function() {
restrict:'E',
replace:true,
controller:function($scope){
$scope.theAttribute = "";
},
link:function(scope,elem,attr) {
attr.$observe('myAttribute',function(newValue,oldValue){
if(newValue != oldValue)
scope.theAttribute = newValue;
})
}
});
额外提示:要记住链接功能中的变量,只需考虑&#34; sea&#34;。范围,元素,属性