Evr*_*glu 0 javascript jquery jquery-ui angularjs
我在我的应用程序中有这段html代码(之前定义了ng-app和ng-controller值):
<div>
<label for="projectSearchDateFrom"><%= Res("Projects.Search.From")%></label>
<input id="projectSearchDateFrom" type="text" ng-model="startDate" ui-date="dateOptions"/>
<img ng-show="hasStartDate()" ng-click="clearStartDate()" src="/_Layouts/ClientPortal/Images/layout/TA/delete-small.png" alt="<%= Res("ToolbarDialog.Clear")%> <%= Res("Projects.Search.From")%>" title="<%= Res("ToolbarDialog.Clear")%>" />
</div>
Run Code Online (Sandbox Code Playgroud)
我的AngularJS控制器看起来像这样:
function ProjectSearchCtrl($scope) {
$scope.startDate = '';
$scope.hasStartDate = function () {
return $scope.startDate != '';
};
$scope.clearStartDate = function () {
$scope.startDate = '';
};
$scope.dateOptions = {
dateFormat: "yy-mm-dd",
showOn: "focus"
};
}
Run Code Online (Sandbox Code Playgroud)
这很完美:由于AngularUI,AngularJS绑定工作正确地设置了一个datepicker ...
但是如果我将showOn值更改为"button"或"both"(实际显示datepicker按钮的两个可能选项),输入后的所有内容(包含ui-date属性)将停止工作:ng-show,ng- click ...控制器甚至没有被调用.
版本(全部是最新的):
请查看Select2指令中的这一行.这是一张纸条给任何人写指令/实施在AngularJS插件(不只是AngularUI):
在链接元素之后立即注入新DOM元素的任何插件都有破坏编译器的风险.原因是因为AngularJS的工作方式,它在编译时缓存每个DOM元素的索引,然后在链接时进行第二次传递.注入新DOM时,会在指令后立即偏移所有兄弟节点的索引.
出于这个原因,我被迫在setTimeout中包装TinyMCE和Select2,以便在链接完成后注入DOM .请注意,我不打扰使用$ timeout因为我真的不需要/只需要启动$ apply()来打开插件,因为当插件更改数据时已经有回调来执行此操作.
我将研究确保AngularUI中的这个是统一的.不幸的是,目前在AngularJS中似乎没有解决这个问题的优雅方案,但这是我一直在思考的一个问题,并且我一直在寻找更好的解决方案.
有关编译与链接的详细信息,请参阅此Google网上论坛帖子:https://groups.google.com/forum/? fromgroups#!searchin/angular/compile $ 20link/angular/Ruwn5W3Q5I0/KJhcQJ_RNsIJ
您还可以在将来打开AngularUI项目的错误票.
归档时间: |
|
查看次数: |
4185 次 |
最近记录: |