加载视图时,我想在其关联的控制器中运行一些初始化代码。
为此,我在视图的主要元素上使用了ng-init指令:
<div ng-init="init()">
blah
</div>
并在控制器中:
$scope.init = function () {
if ($routeParams.Id) {
//get an existing object
});
} else {
//create a new object
}
$scope.isSaving = false;
}
第一个问题:这是正确的方法吗?
接下来,事件顺序发生了问题。在视图中,我有一个“保存”按钮,它使用如下ng-disabled
指令:
<button ng-click="save()" ng-disabled="isClean()">Save</button>
该isClean()
功能在控制器中定义:
$scope.isClean = function () {
return $scope.hasChanges() && !$scope.isSaving;
}
如您所见,它使用$scope.isSaving
在init()
函数中初始化的标志。
问题:该视图被加载的情况下,isClean函数被调用 之前的init()
功能,因此,该标志isSaving
是undefined
。我该怎么做才能防止这种情况?
加载视图时,其关联的控制器也会加载。无需使用ng-init
,只需init()
在控制器中调用您的方法即可:
$scope.init = function () {
if ($routeParams.Id) {
//get an existing object
} else {
//create a new object
}
$scope.isSaving = false;
}
...
$scope.init();
由于您的控制器之前运行ng-init
,这也解决了您的第二个问题。
jsfiddle
正如John David Five
所提到的,你可能不希望这种重视$scope
,为了使这个方法私有。
var init = function () {
// do something
}
...
init();
jsFiddle
如果要等待预先设置某些数据,则将该数据html" target="_blank">请求移至解决方案,或将监视程序添加到该集合或对象,并在数据满足初始化条件时调用init方法。通常,一旦满足我的数据要求,我就会删除观察者,因此,如果您观察的数据发生更改并且符合运行init方法的条件,则init函数不会随机重新运行。
var init = function () {
// do something
}
...
var unwatch = scope.$watch('myCollecitonOrObject', function(newVal, oldVal){
if( newVal && newVal.length > 0) {
unwatch();
init();
}
});
问题内容: 我正在尝试在应用程序启动时加载自定义文件。 我的属性文件与主类位于同一包中,因此我假定命令行参数应加载属性文件。 但是仅当我指定属性文件的完整绝对路径时才加载属性。任何建议如何使用相对路径? 问题答案: Java日志记录不会在整个硬盘上搜索文件。有非常简单的规则来查找文件。您希望Java看到两个文件是彼此属于的,但是您在任何地方都没有这样说。由于Java看不到属性文件和您的类之间的任何
我一直在查看Sitecore。内核,但似乎找不到Sitecore运行初始化管道的位置。它是在每个页面请求上运行还是在应用程序启动时只运行一次?你能告诉我为这个管道调用Run方法的确切位置吗? 更新我最后问这个问题的原因是因为我在Sitecore的代码中追溯了管道的执行。这是我发现的: 管道运行处理器... 调用... 调用... 创建新的对象 事情变得有点模糊。。。 返回新路由HttpHandle
我有一个JavaFX应用程序,它与用Java编写的控制器类一起使用FXML。在Java控制器中,在FXML节点初始化之前,我需要小心不要对其进行操作(否则我会得到一个NullPointerException),这在运行初始化方法之前是无法保证的。所以我发现自己经常这样做: 控制器在FXML文件中设置如下: 然后是Java文件中的控制器。 这是可行的,但它笨重且重复。我必须创建globalValue
我写了这个计数器,但当我午餐时,应用程序崩溃了,我现在不知道错误在哪里,请提供一些帮助,谢谢你告诉我错误在哪里,或者我如何以正确的方式编写代码 这是我的木头猫
本文向大家介绍backbone.js 视图的初始化功能,包括了backbone.js 视图的初始化功能的使用技巧和注意事项,需要的朋友参考一下 示例 initialize 构造视图后,Backbone会立即调用它。 可选参数 该initialize函数接收传递给视图构造函数的所有参数。通常,用于传递视图默认选项的options哈希: 您可以将任何自定义属性添加到选项哈希和/或自定义参数。 并构造视
本文向大家介绍Angular如何在应用初始化时运行代码详解,包括了Angular如何在应用初始化时运行代码详解的使用技巧和注意事项,需要的朋友参考一下 前言 想象一下,您的应用需要一些动态配置信息,这些信息在应用启动之前需要动态获取,并在应用运行中使用。 显然不能直接写道静态配置文件中,但是从客户端发出的请求又是一个异步请求,如何协调这个问题呢? 这里,我想向您演示,如何在 Angular 应用初