【发布时间】:2016-02-02 16:21:22
【问题描述】:
我正在创建一个自定义指令,它采用一个由输入类型 textarea 组成的简单模板,正在将 ng-model 分配给 ngmodel,并在其中创建一个链接函数,正在创建一个 on change 事件,在该事件中我试图获取 ngmodel 值,但它的 printing undefined,请帮我解决这个问题,在这里发布我尝试过的链接,如果需要更正 plunkr ,代码从这里开始
// Code goes here
var app = angular.module('myApp',[]);
app.directive('markdownEditor', function () {
return {
restrict: 'E',
scope: {
ngModel: "="
},
require:'ngModel',
template:
'<textarea ng-model="ngModel"></textarea>' +
'{{ ngModel}}',
link:function(scope,ele,attr,ctrl){
ele.on("keydown",function(){
alert(scope.ctrl)
})
}
}
});
app.controller('DemoCtrl', function ($scope) {
var x= $scope.markdown;
});
<html ng-app="myApp">
<body>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.0/angular.min.js"></script>
<div ng-controller="DemoCtrl">
<h3>Markdown editor</h3>
<markdown-editor ng-model="markdown" name="markdown"></markdown-editor>
</div>
</body>
</html>
【问题讨论】:
-
尝试将模型控制器引用为
ctrl而不是scope.ctrl -
将
scope.ctrl更改为scope.ngModel并将keydown更改为keyup。 -
错了你没有绑定到你的
ngModel中的scope.ctrl。另请注意,如果您希望在事件处理程序中进行范围更改,您可能必须调用$apply。这发生在角度范围之外。
标签: javascript angularjs