这就是我的index.html的结构。
<html ng-app='information'>
<body ng-controller="FirstController as first>
<div ng-controller="SecondController as second>
<div id="information">
<myOwnDirective ng-controller="ThirdController as thirdCtrl"></myOwnDirective>
</div>
这是我的自定义指令。
(function() {
var app = angular.module('information', ['ui.bootstrap']);
app.directive('myOwnDirective', function(){
return {
restrict: 'E',
templateUrl: 'my-own-directive.html',
};
});
这是一个自定义指令模板。我 - 拥有 - directive.html
<uib-accordion tag ng-repeat="info in first">
<form ng-submit="thirdCtrl.updateInformation()">
<div class="form-group">
<label for="someprop">Property</label> <input type="text" name="someprop"
class="form-control" ng-model="info.propValue"
ng-readonly="info.propValue">
</div>
<button type="submit" class="btn btn-success btn-lg btn-block">Click</button>
</form>
这是我的脚本文件:myScript.js
(function() {
angular.module('information').controller('ThirdController', [ '$scope', function($scope) {
console.log("In third controller"); // This prints
this.updateInformation = function() {
console.log("Inside updateInformation");
console.log("Inside scope is: "+ $scope) // It is undefined
};
}]);
})();
我想得到的是从范围获取info.propValue的值,但我似乎无法得到它。它总是显示为未定义。我有一个很长的形式,我想读的内容,但我似乎无法得到价值观。一旦我拥有它们,我将使用$ http进行Ajax调用。另外,如果我尝试通过执行$ scope.updateInformation()来调用函数updateInformation(),它不会调用,但如果我执行此操作,它会被调用.updateInformation()。为什么?我错过了什么或我做错了什么?任何帮助表示赞赏。已经坚持了很长一段时间。谢谢。