angular.js - angular中ng-init中定义值在控制器里面获取不到值
本文介绍了angular.js - angular中ng-init中定义值在控制器里面获取不到值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
我的问题:
如题: angular中ng-init中定义值在控制器里面获取不到值相关代码:
<div class="container" ng-app="app" ng-controller="ctrl" ng-init="demo='风一样的男子'">
<h1>ng-init</h1>
<input ng-model="demo" type="text">
demo = {{demo}}
<button type="button" ng-click="demoClick()">button</button>
</div>
(function(angular) {
'use strict';
var app = angular.module('app', []).controller('ctrl', ctrl);
function ctrl ($scope, $http) {
console.log('直接获取: ' + $scope.demo); // undefined
$http.post('/demo', {
direction: $scope.demo // undefined
});
$scope.demoClick = function () {
console.log('click: ' + $scope.demo); // 风一样的男子
$http.post('/demo', {
direction: $scope.demo // 风一样的男子
});
};
}
}(angular));
WHY?
解决方案
这个涉及到每个指令的编译链接过程。需要说明的是,在同一个节点上,如果有ngController指令,它比任何其他指令都要先执行编译过程(它的 priority为500,而ngInit的 priority为450)。因而,在执行ngController的链接函数时,也就是我们常常看到的controller函数,ngInit还未完成编译过程,也就自然取不到demo的值。
http://stackoverflow.com/ques...
这篇关于angular.js - angular中ng-init中定义值在控制器里面获取不到值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文