![](/img/trans.png)
[英]Using ng-init to send data from a ng-repeat to another controller
[英]read ng-init data from controller
我是angularJS的新手,我想从contoller访问ng-init数据,但始终返回undefined,这是我的代码
的HTML
<div class="row" ng-controller="IFuseController" ng-init="myText='Hello World!'">
....
</div>
角度控制器
uniqcApp.controller('IFuseController', function (IFuseService, $scope) {
console.log("Cingda " + $scope.myText); //return undefined
});
任何想法?
发生这种情况是因为在加载时调用了控制器,而此时您没有为变量myText设置值。
加载文本后,您需要触发一个事件。
演示
var uniqcApp = angular.module('uniqueApp',[]); uniqcApp.controller('IFuseController', function ($scope){ $scope.read = function(){ console.log("Cingda " + $scope.myText); }; });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <body ng-app="uniqueApp"> <div class="row" ng-controller="IFuseController" ng-init="myText='Hello World!'"> <button ng-click="read()">Read initial value</button> </div> </body>
您可以强制将ng-init
结果绑定到$scope
:
var uniqcApp = angular.module('uniqueApp', []); uniqcApp.controller('IFuseController', function($scope) { var el = angular.element(document.querySelector('[ng-controller=IFuseController]')); var attr = el[0].getAttribute('ng-init'); $scope.$eval(attr); console.log("Cingda " + $scope.myText); });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"> </script> <body ng-app="uniqueApp"> <div class="row" ng-controller="IFuseController" ng-init="myText='Hello World!'"> </div> </body>
为什么不在控制器端初始化数据? 如果您仍然想要这样做,可以使用$ watch
$scope.$watch('myText',function(newVal){
alert(newVal);
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.