Angular 带有按钮的下拉菜单未获取数据
Angular dropdown with a button not getting data
我是 angular 的新手,被选中 linking 下拉菜单选择为 ng-click 按钮
<div class="col-xs-2">
<select name="cars" ng-model="dropdown_data">
<option>email</option>
<option>phone</option>
<option>username</option>
</select>
</div>
<br />
<div class="col-xs-4">
<button type="button" class=" " data-ng-click="search_{{dropdown_data}}()">Search</button>
</div>
<script>
var ng = angular.module('myApp', []);
ng.controller('ctrl', function($scope, $http) {
$scope.search_phone = function() {
alert("phone")
}
$scope.search_email = function() {
alert("email")
}
})
</script>
这似乎相当简单,但我不确定我做错了什么...我无法根据所选下拉列表显示警报
笨蛋 link http://plnkr.co/edit/Iicm9tvfizXxNl3MwtZI?p=preview
非常感谢任何帮助...提前致谢
问题是这个data-ng-click="search_{{dropdown_data}}()"
。最好像这样将值传递给函数:
<button type="button" data-ng-click="search(dropdown_data)">Search</button>
$scope.search = function(type) {
alert(type)
}
也不要忘记 ng-app 和 ng-controller。
plunkr 中几乎没有您需要的东西。
首先,您需要在 HTML 上定义它实际上是一个 Angular 应用程序(通过 ngApp 属性)。
其次,您需要为您的视图定义一个控制器(通过 ngController 属性)。
准备好这些东西后,您需要了解这会做什么
ng-click="search_{{dropdown_data}}()"
如果您考虑 ng-click 的工作原理,它会在单击时注册一个函数。这发生在指令的 compile
阶段 (as you can see on its sourcecode)。
这意味着当指令编译时,它将注册名称为 search_{{dropdown_data}}
的函数,即使 dropdown_data
稍后在其值更改时进行插值,但最初绑定的函数仍然有效'更新。
但是,如果您将 dropdown_data 作为属性或函数映射的键,则可以使用。这里有一个你可以如何做到这一点的例子:
$scope.search = {
phone: function() {
alert("phone")
},
email: function() {
alert("email")
}
};
在按钮上:data-ng-click="search[dropdown_data]()"
这里是一个工作 plunkr:http://plnkr.co/edit/u4vJj2a0r1a95w64crHM?p=preview
我也是 angular 的新手,但使用了相同的功能,但没有直接给定锚点的搜索按钮 link 如果需要,请尝试此操作,
<div ng-app="myApp">
<div ng-controller="setContent">
<div class="dropdown">
<button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
Subject
<span class="caret"></span>
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
<li ng-repeat="a in subjects"><a href="#">{{a}}</a></li>
</ul>
</div>
var app = angular.module('myApp', []);
app.controller('setContent', function($scope, $http) {
$scope.subjects = ['Math', 'Physics', 'Chemistry', 'Hindi', 'English'];
});
});
我是 angular 的新手,被选中 linking 下拉菜单选择为 ng-click 按钮
<div class="col-xs-2">
<select name="cars" ng-model="dropdown_data">
<option>email</option>
<option>phone</option>
<option>username</option>
</select>
</div>
<br />
<div class="col-xs-4">
<button type="button" class=" " data-ng-click="search_{{dropdown_data}}()">Search</button>
</div>
<script>
var ng = angular.module('myApp', []);
ng.controller('ctrl', function($scope, $http) {
$scope.search_phone = function() {
alert("phone")
}
$scope.search_email = function() {
alert("email")
}
})
</script>
这似乎相当简单,但我不确定我做错了什么...我无法根据所选下拉列表显示警报
笨蛋 link http://plnkr.co/edit/Iicm9tvfizXxNl3MwtZI?p=preview
非常感谢任何帮助...提前致谢
问题是这个data-ng-click="search_{{dropdown_data}}()"
。最好像这样将值传递给函数:
<button type="button" data-ng-click="search(dropdown_data)">Search</button>
$scope.search = function(type) {
alert(type)
}
也不要忘记 ng-app 和 ng-controller。
plunkr 中几乎没有您需要的东西。
首先,您需要在 HTML 上定义它实际上是一个 Angular 应用程序(通过 ngApp 属性)。 其次,您需要为您的视图定义一个控制器(通过 ngController 属性)。
准备好这些东西后,您需要了解这会做什么
ng-click="search_{{dropdown_data}}()"
如果您考虑 ng-click 的工作原理,它会在单击时注册一个函数。这发生在指令的 compile
阶段 (as you can see on its sourcecode)。
这意味着当指令编译时,它将注册名称为 search_{{dropdown_data}}
的函数,即使 dropdown_data
稍后在其值更改时进行插值,但最初绑定的函数仍然有效'更新。
但是,如果您将 dropdown_data 作为属性或函数映射的键,则可以使用。这里有一个你可以如何做到这一点的例子:
$scope.search = {
phone: function() {
alert("phone")
},
email: function() {
alert("email")
}
};
在按钮上:data-ng-click="search[dropdown_data]()"
这里是一个工作 plunkr:http://plnkr.co/edit/u4vJj2a0r1a95w64crHM?p=preview
我也是 angular 的新手,但使用了相同的功能,但没有直接给定锚点的搜索按钮 link 如果需要,请尝试此操作,
<div ng-app="myApp">
<div ng-controller="setContent">
<div class="dropdown">
<button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
Subject
<span class="caret"></span>
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
<li ng-repeat="a in subjects"><a href="#">{{a}}</a></li>
</ul>
</div>
var app = angular.module('myApp', []);
app.controller('setContent', function($scope, $http) {
$scope.subjects = ['Math', 'Physics', 'Chemistry', 'Hindi', 'English'];
});
});