2017-08-28 12 views
0

随着Angularjs,剑道UI组件,例如:

<input kendo-date-picker="myDatePicker" 
     ng-model="dateString" 
     k-ng-model="dateObject" 
     style="width: 100%;" /> 

我能够与访问日期选取器中的JavaScript变量$scope.myDatePicker

现在,问题是,这个日期选择器带有一个包装与标记ng-switch-when

<div ng-switch="userSelection.code"> 
    <div ng-switch-when="JUST_DEMO"> 
     <input kendo-date-picker="myDatePicker" 
     ng-model="dateString" 
     k-ng-model="dateObject" 
     style="width: 100%;" /> 
    </div> 
</div> 

由此,在JavaScript中,变量$scope.myDatePicker变为“undefined”,即使之后的标志JUST_DEMO随后接通。

所以我的问题是,如何解决这个问题?我需要在javascript中访问$scope.myDatePicker才能在代码中手动打开日期选择器。

P.S:

我想我找到了一个工作方法:在databound事件中使用$compile

回答

1

我没有看到任何代码ng-switch,如果不知道它的存在在你的标签:

<div ng-switch="myVar"> 

ng-switch是针对abve代码片段myVar变量进行评估。

我建议你使用纳克开关如下:

声明范围变量具有某种标志与碱您ng-switch

$scope.datePickerParent = {};// some object 
datePickerParent .JUST_DEMO = true/false; 
datePickerParent.myDatePicker = ''; //assign some value 
<td ng-switch on="datePickerParent.showNgSwitch"> 

    <div ng-switch-when="datePickerParent.JUST_DEMO"> 
    <input kendo-date-picker="datePickerParent.myDatePicker" 
     ng-model="dateString" 
     k-ng-model="dateObject" 
     style="width: 100%;" /> 
    </div> 
    </td> 

也有看看这个SO post

还尝试使用$parent访问范围变量,ng-switch创建它自己的范围

+0

对不起,我的错,俯瞰NG-开关访问(刚刚编辑)。但我认为这个问题起初是因为ng-switch-when条件没有满足,所以html不是在加载时创建的。由于某种原因,虽然它后来满足,$ scope变量仍然未定义.... – zeroflaw

+0

我的意思是在我的回应中表达的可能是ng-switch-when无法直接访问JUST_DEMO恕我直言,它必须可以通过ng-switch变量,例如userSelection.JUST_DEMO,在链接的文章中提到 – Winnie

+0

hm ...现在理解你的话。但我恐怕这可能不是原因。正如我看到的那样,在页面上呈现剑道日期选择器。就这样,我无法使用$ scope变量访问它... – zeroflaw

0

I找到了解决办法:

<div ng-switch="userSelection.code"> 
    <div ng-switch-when="JUST_DEMO"> 
     <input kendo-date-picker="myKendo.myDatePicker" 
     ng-model="dateString" 
     k-ng-model="dateObject" 
     style="width: 100%;" /> 
    </div> 
</div> 

,而不是使用普通“myDatePicker”变量,它包装在另一个物体,诸如myKendo

因此,在JavaScript中,这可以用$scope.myKendo.myDatePicker.