我想弄清楚为什么我$watch没有被触发.这是相关控制器的片段:
$scope.$watch('tasks', function (newValue, oldValue) {
//do some stuff
//only enters here once
//newValue and oldValue are equal at that point
});
$scope.tasks = tasksService.tasks();
$scope.addTask = function (taskCreationString) {
tasksService.addTask(taskCreationString);//modifies tasks array
};
Run Code Online (Sandbox Code Playgroud)
在我看来,tasks显然正在更新正确,因为我的长度限制如下:
<span>There are {{tasks.length}} total tasks</span>
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我有一个看起来像这样的控件:
<telerik:RadCodeBlock runat="server">
<script type="text/javascript">
function refresh() {
window.$find("<%= RadAjaxManager1.ClientID %>").ajaxRequest("RebindRecommendations");
}
</script>
</telerik:RadCodeBlock>
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" OnAjaxRequest="AjaxRequest">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="RadAjaxManager1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="NameOfGrid" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadWindowManager ID="RadWindowManager1" runat="server">
<Windows>
<telerik:RadWindow ID="RadWindow1" runat="server" NavigateUrl="UrlOfPage" OnClientClose="refresh"></telerik:RadWindow>
</Windows>
</telerik:RadWindowManager>
Run Code Online (Sandbox Code Playgroud)
页:
<script type="text/javascript">
function closeWindow() {
self.close();
return false;
}
</script>
<!-- form fields here -->
<telerik:RadButton runat="server" ID="_cancel" Text="Cancel" OnClientClick="closeWindow"></telerik:RadButton>
<telerik:RadButton runat="server" ID="_submit" Text="Submit" OnClientClick="closeWindow" OnClick="DoSomeDataBaseStuff"></telerik:RadButton>
Run Code Online (Sandbox Code Playgroud)
这按预期工作.我的RadWindow被删除,我的控件的网格在点击取消或提交按钮时刷新.问题是数据库到那时还没有完成其工作,因此网格刷新不会显示更改.我试图将我的页面实现切换为如下所示:
页:
<script type="text/javascript">
function closeWindow() {
self.close();
return false;
}
</script>
<!-- …Run Code Online (Sandbox Code Playgroud)