gpt4 book ai didi

javascript - ng 模型值在自定义指令中打印未定义

转载 作者:行者123 更新时间:2023-11-28 06:25:32 26 4
gpt4 key购买 nike

我正在创建一个自定义指令,它采用一个由输入类型 textarea 组成的简单模板,我将 ng-model 分配给 ngmodel 并在其中创建一个链接函数,我正在创建一个 on Change 事件,其中我试图获取 ngmodel 值,但其 <强>打印未定义,请帮助我解决这个问题,在这里发布我尝试过的链接,如果需要的话进行更正 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>

最佳答案

这里至少有两件事出了问题:你试图警告 Controller 本身,而不是 ng-model 变量,并且检查 keydown 意味着你将永远落后一次击键。

试试这个:

var app = angular.module('myApp', []);
app.directive('markdownEditor', function() {
return {
restrict: 'E',
require: 'ngModel',
template: '<textarea ng-model="foo"></textarea>',
link: function(scope, ele, attr, ctrl) {
ele.on("keyup", function() { // (or use "change" if you don't need to check every single keystroke)
alert(scope.foo);
})
}
}
});

app.controller('DemoCtrl', function($scope) {
});

https://plnkr.co/edit/wf0NBnQqmgcwE606xeZg

(我强烈建议不要将变量命名为“ngModel”——这非常令人困惑,因为它使得很难区分变量和 ngModel 指令本身。)

关于javascript - ng 模型值在自定义指令中打印未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35158561/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com