【发布时间】:2015-09-28 16:40:41
【问题描述】:
我有这个 jQuery 选择器。一切工作正常,但只是通过添加和初始化角度,多选停止工作。您可以尝试删除所有不必要的内容,您会看到这种情况发生:
(我不知道为什么 github 的 url 在这里不起作用,但是如果需要,您可以下载文件,因为这不是我要描述的问题)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<title>SPIROOX - Campaigns</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" type="text/css" />
<link rel="stylesheet" href="bootstrap-multiselect/dist/css/bootstrap-multiselect.css" type="text/css" />
</head>
<body ng-app="campaign_listing">
<div class="content" ng-controller="campaign_list_controller as ctrl">
<h2>Campaign Administration</h2>
<a href="" class="btn_new">+</a>
<div class="filters">
<select id="multiselect_status" ng-model="ctrl.filters.status" ng-change="ctrl.update_fields()" multiple="multiple">
<option value="active">Active</option>
<option value="suspended">Suspended</option>
<option value="closed">Closed</option>
</select>
</div>
</div>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<script type="text/javascript" src="bootstrap-multiselect/dist/js/bootstrap-multiselect.js"></script>
<script>
$(document).ready(function() {
$('#multiselect_status').multiselect({
includeSelectAllOption: true,
enableFiltering: true,
nonSelectedText: 'Status'
});
});
</script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.6/angular.js"></script>
<script>
var my_app = angular.module("campaign_listing", []);
var controllers = {};
controllers.campaign_list_controller = function($http) {
this.filters = {
status: 'active',
client: null
};
var campaigns = {};
this.update_fields = function() {
console.log("update!");
console.log(this.filters);
}
}
my_app.controller(controllers);
</script>
</body>
</html>
【问题讨论】:
-
如果您在使用这个多选插件时仍然遇到问题,我建议您使用指令创建自己的多选 - 它非常简单。看看这个多选 github.com/akashrajkn/sf-multiselect 插件。
-
我认为您的标题应该提到这不仅仅是“jQuery 多选”,而是 Bootstrap 多选。不确定这是否有帮助,但试试这个:stackoverflow.com/questions/16954605/…
-
document.ready在角度上是毫无价值的。 jQuery 插件应该在指令中初始化,以确保在代码运行时元素存在。话虽如此,您可能应该考虑摆脱 bootsrap.js 并使用也很容易获得的角度模块和指令 -
这里没有报错:“my_app.controller(controllers)”吗? “控制器”方法需要 2 个参数:“控制器(名称,构造函数);”
-
没有错误。顺便说一句,发生的事情是 jquery 的复选框没有得到检查,我不知道为什么
标签: javascript jquery angularjs twitter-bootstrap