AngularJS指令:与指令使用的表达式’undefined’不可分配
发布时间:2020-12-17 08:14:20 所属栏目:安全 来源:网络整理
导读:我是一个2周的Angular noob,我一直在尝试我的第一个指令超过一天。 :P我已经阅读了 this和 this,这似乎是很好的指令介绍和一堆Stackoverflow的答案,但我不能得到这个工作。 div ng-app="App" ng-controller="Main" textarea caret caret-position="uiSta
我是一个2周的Angular noob,我一直在尝试我的第一个指令超过一天。 :P我已经阅读了
this和
this,这似乎是很好的指令介绍和一堆Stackoverflow的答案,但我不能得到这个工作。
<div ng-app="App" ng-controller="Main"> <textarea caret caret-position="uiState.caretPosition"></textarea> {{uiState.caretPosition}} </div> 和 angular.module('App',[]) .controller('Main',['$scope',function ($scope) { $scope.uiState = {}; $scope.uiState.caretPosition = 0; }]) .directive('caret',function() { return { restrict: 'A',scope: {caretPosition: '='},link: function(scope,element,attrs) { var $el = angular.element(element); $el.on('keyup',function() { scope.caretPosition = $el.caret(); }); } }; }); 小提琴是here.我基本上是试图让一个文本框中的插入位置。我正在使用这个jQuery plugin的小提琴(.caret()方法的来源,它应该只是返回一个数字)。 我的问题是 >我甚至在这里需要一个指令吗? Ben Nadel says最好的指令是你不必写的(对此而言) 谢谢!
你很近..主要的问题是在角度不知道的事件中改变范围变量。当事件发生时,您必须通过使用范围来指出有变化的内容。$ apply。
$el.on('keyup',function() { scope.$apply( function() { scope.caretPosition = $el.caret(); }); }); Working fiddle here 对于问题: >是的,我不认为有必要为此写一个指令。 另请注意,如果您单击并移动插入符号,它将不会更新,因为它只侦听keyup。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |