抱歉这个愚蠢的问题,大家都知道如何开始使用AngularUI吗?我从Github下载了它并阅读README中的说明但仍然不明白我必须做什么.
我已经配置了一些在登录之前可供所有用户使用的基本路由:
App.config(function ($routeProvider) {
$routeProvider.
when('/login', { templateUrl: 'views/login.html', controller: PageStartCtrl.Controller }).
otherwise({ redirectTo: '/login' });
});
Run Code Online (Sandbox Code Playgroud)
所以用户唯一能做的就是登录.用户登录后,我想注册其他路由,如下所示:
$http
.post('api/Users/Login', { User: userName, Password: userPassword })
.success(function (response : any) {
App.config(function ($routeProvider) {
$routeProvider
.when('/dashboard',
{ templateUrl: 'part/dashboard.html',
controller: DashboardCtrl.Controller });
});
Run Code Online (Sandbox Code Playgroud)
但是,我想我应该只调用一次.config方法,因为$ routeProvider是一个对/ login route一无所知的全新实例.进一步的调试向我展示了在解析视图更改时使用$ resourceProvider的第一个实例.
问:以后如何注册路线?
从路由和模板动态添加到$ routeProvider的解决方案可能有效,但是非常难看(涉及全局变量nastyGlobalReferenceToRouteProvider).
根据AngularJS的教程,控制器函数仅位于全局范围内.
http://docs.angularjs.org/tutorial/step_04
控制器功能本身是否自动被解析为封装范围,还是它们居住在全球范围内?我知道他们传递了对自己的$ scope的引用,但看起来这个函数本身只是坐在全局范围内.显然,这可能会导致问题,我已经通过经验和教育来学习封装.此外,如果他们确实居住在全球范围内,那么将它们封装在要引用的对象中是不是最佳实践:
Object.functionName();
Run Code Online (Sandbox Code Playgroud)
而不是这个:
functionName();
Run Code Online (Sandbox Code Playgroud)
以防止全球范围内的污染(即重写功能等)发生的问题.
我已经看过各种各样的github指令示例,但没有一个包含一个正在运行的JSFiddle,我也无法让它们中的任何一个工作.令人惊讶的是,目前还不在Angular-UI中.
我正在使用来自http://angular-ui.github.com/bootstrap/的手风琴指令,我需要更多地控制手风琴何时打开和关闭.
更确切地说,我需要一个手风琴组内的按钮,它将关闭其母手风琴并打开下一个手风琴(所以基本上模仿如果close-others设置为true,点击下一个标题会做什么).我还需要做一些验证才能允许关闭手风琴并打开下一个,我还需要将其连接到手风琴标题上的单击事件.
我对angular非常新,我们目前正在将Backbone + JQuery的应用程序重写为Angular.在Backbone版本中,我们使用Twitter Bootstrap手风琴,我们使用JQuery打开和关闭它们.虽然我们仍然可以继续这样做,但我宁愿彻底摆脱JQuery DOM操作,所以我正在寻找一个纯粹的角度解决方案.
我在验证方面尝试做的是
<accordion-group ng-click="close($event)">
Run Code Online (Sandbox Code Playgroud)
在我的控制器里
event.preventDefault();
event.stopPropagation();
Run Code Online (Sandbox Code Playgroud)
这显然不起作用,因为DOM元素被指令替换,并且从不添加点击处理程序.我一直在浏览源代码(并找到了一些非常好的无记录功能),但我甚至不知道在哪里开始解决这个特定的挑战.我正在考虑分配angular-ui并尝试将此功能添加到accordion指令中,但如果我能够在不修改指令的情况下实现这一点,那将会更好.
下面是我用来设置minDate的代码
<input ngbDatepicker #d="ngbDatepicker" [minDate]="minDate" [formControl]="Form.controls['dateOfBirth']">
Run Code Online (Sandbox Code Playgroud)
在组件中,我将minDate设置如下:
public minDate: Date = void 0;
constructor() {
this.minDate = new Date(1950, 1, 1);
}
Run Code Online (Sandbox Code Playgroud)
但是,datepicker仍然将2007年视为minDate.有没有遗漏的东西.如果需要任何其他信息,请告诉我.
谢谢你的时间.
我有一个监听$ scope.$ on的控制器,它会在触发时显示一个弹出窗口.它可以100%的时间从其他几个控制器$ rootScope.$ broadcast方法开始工作.但其中一个将无法工作.
控制器获取事件,并设置所需的$ scope变量,但页面不会更新,即使我触发$ scope.$ eval().然后,如果我转到另一条路线,$ scope将最终渲染,并且模式将弹出该路线的顶部.我不知道我是否在angularjs中发现了一个bug,或者我遗漏了一些基本的东西.
对不起,我不能包含代码,这是一个工作项目.
我刚刚安装了Angular UI,但我很难让它工作.以下是我遵循的步骤:
index.html(Angular v1.0.1,AngularUI v0.2.1)
<script src="scripts/vendor/angular.js"></script>
<script src="scripts/vendor/jquery-1.7.2.js"></script>
<script src="scripts/vendor/jquery-ui-1.8.18.js"></script>
<script src="scripts/vendor/bootstrap.js"></script>
<script src="scripts/vendor/angular-ui.js"></script>
Run Code Online (Sandbox Code Playgroud)
app.js
var publicApp = angular.module('publicApp', ['ngResource', 'ui'])
Run Code Online (Sandbox Code Playgroud)
我的HTML
<input name="dateField" class="datepicker" value="Click Here for Datepicker" ui-date>
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
TypeError: Object [[object HTMLInputElement]] has no method 'datepicker'
Run Code Online (Sandbox Code Playgroud)
在chrome中使用JS控制台可以:
$('.datepicker').datepicker()
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
你知道是否有人将Bootstrap的脚本移植到AngularJS?
我需要我的应用程序的Bootstrap的分割按钮下拉菜单,我真的想避免拉jQuery.我似乎没有谷歌这个.
angularjs ×9
angular-ui ×4
javascript ×3
angular ×1
datepicker ×1
deferred ×1
dynamic ×1
jquery-ui ×1
ng-bootstrap ×1
url-routing ×1