根据这个Plunkr,在指令中使用ng-init
将不会执行一个函数分配给范围内的链接,但它会如果我在控制器中。ng-init不能在指令的链接函数中工作吗?
任何人都可以解释这一点吗?
app.js
var app = angular.module('app', []);
app.directive('linkDir', function(){
return {
restrict: 'E',
scope: true,
template: 'Link: <p ng-init="initLink()">{{ linkmsg }}</p>',
link: function(scope){
scope.initLink = function(){
scope.linkmsg = 'link function executed'
}
}
};
});
app.directive('controllerDir', function(){
return {
restrict: 'E',
scope: true,
template: 'Controller: <p ng-init="initController()">{{ controllermsg }}</p>',
controller: function($scope){
$scope.initController = function(){
$scope.controllermsg = 'controller function executed';
}
}
};
});
HTML
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="style.css">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular.min.js"></script>
<script src="script.js"></script>
</head>
<body ng-app="app">
<link-dir></link-dir>
<controller-dir></controller-dir>
</body>
</html>
我看到了,这是有道理的。我正在使用ng-init来访问一个ng表单,该表单会自动发布到作用域,但直到控制器运行后才会被填充。你对这个问题有什么建议吗? – 2014-08-31 23:38:05
控制器**创建完成后,填充表单的要求是什么?你不能在控制器**被创建时填充它吗? [实施例](http://plnkr.co/edit/frVSPssQOOs1vn6auNBr?p=preview)。 – bmleite 2014-09-01 09:45:36