Javascript Angularjs:从更改事件的指令下拉列表中使用param调用控制器方法
我做了一个下拉指令。从下拉列表中选择值时,将调用控制器中的方法,并通过所选过滤器。除了方法总是返回默认的选定值之外,其他一切都正常工作,无论选择了什么 html:Javascript Angularjs:从更改事件的指令下拉列表中使用param调用控制器方法,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我做了一个下拉指令。从下拉列表中选择值时,将调用控制器中的方法,并通过所选过滤器。除了方法总是返回默认的选定值之外,其他一切都正常工作,无论选择了什么 html: <div ng-controller="Ctrl"> <div> <dropdown filters="filters" filter="filter" select="selectFilter(filter)"></dropdown> </di
<div ng-controller="Ctrl">
<div>
<dropdown filters="filters" filter="filter" select="selectFilter(filter)"></dropdown>
</div>
</div>
javascript:
var app = angular.module('app', []);
function Ctrl($scope){
$scope.filters = [
{ Id: 1, Name: "All" }, { Id: 2, Name: "filter1" }, { Id: 3, Name: "filter2" }, { Id: 4, Name: "filter3"}
];
$scope.filter = $scope.filters[0];
$scope.selectFilter = function(selectedFilter){
alert(selectedFilter.Name);
};
}
app.directive('dropdown', function(){
return {
restrict: "E",
scope: {
filter: "=",
filters: "=",
select: "&"
},
template: "<select ng-model=\"filter\" ng-change=\"select(filter)\" ng-options=\"f.Name for f in filters\"></select>"
};
});
var-app=angular.module('app',[]);
函数Ctrl($scope){
$scope.filters=[
{Id:1,Name:“All”},{Id:2,Name:“filter1”},{Id:3,Name:“filter2”},{Id:4,Name:“filter3”}
];
$scope.filter=$scope.filters[0];
$scope.selectFilter=函数(selectedFilter){
警报(selectedFilter.Name);
};
}
app.directive('dropdown',function(){
返回{
限制:“E”,
范围:{
过滤器:“=”,
过滤器:“=”,
选择“&”
},
模板:“”
};
});
工作小提琴:调用方法绑定时使用了错误的语法 尝试:
我做了这个,但另一个答案似乎更好:p
var-app=angular.module('app',[]);
函数Ctrl($scope$element){
$scope.filters=[
{Id:1,Name:“All”},{Id:2,Name:“filter1”},{Id:3,Name:“filter2”},{Id:4,Name:“filter3”}
];
$scope.filter=$scope.filters[0];
}
app.directive('dropdown',function(){
返回{
限制:“E”,
范围:{
过滤器:“=”,
过滤器:“=”,
},
模板:“”,
控制器:函数($scope$element){
$scope.selectFilter=函数(selectedFilter){
警报(selectedFilter.Name);
}
}
}
});
不是,它返回的是以前的值而不是新值,因为您发送到函数的内容您发送以前的值是正确的,但是我如何让它发送新值呢?谢谢,这很有效。您能解释一下“{filter:filter}”部分吗?@Mdb:firstfilter
是表达式中的参数名selectFilter(filter)
,第二个filter
是参数的名称value@KhanhTO你能详细解释一下吗,我得承认我不明白这是怎么回事。@Mosho:用表达式selectFilter(filter)
,我们指定此函数有一个命名参数(filter
)。要在指令中调用它,必须同时指定参数的名称及其值。@KhanhTO但是,如果您只执行OP所执行的操作,而不是您所执行的操作,为什么它会将以前的值作为参数获取呢?(我知道我们不应该在这里聊天,但我不明白,我想其他人也不会)
ng-change=\"select({filter:filter})\
var app = angular.module('app', []);
function Ctrl($scope, $element){
$scope.filters = [
{ Id: 1, Name: "All" }, { Id: 2, Name: "filter1" }, { Id: 3, Name: "filter2" }, { Id: 4, Name: "filter3"}
];
$scope.filter = $scope.filters[0];
}
app.directive('dropdown', function(){
return {
restrict: "E",
scope: {
filter: "=",
filters: "=",
},
template: "<select ng-model=\"filter\" ng-change=\"selectFilter(filter)\" ng-options=\"f.Name for f in filters\"></select>",
controller: function($scope, $element) {
$scope.selectFilter = function(selectedFilter) {
alert(selectedFilter.Name);
}
}
}
});