【发布时间】:2014-03-17 21:04:27
【问题描述】:
我是一个 2 周大的 Angular 菜鸟,我已经尝试了我的第一个指令超过一天了。 :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 最好的指令是你不必写的(阿门!)
- 如果是,这是执行指令的正确方法吗?即具有双向绑定变量的隔离范围?
- 如果是,当我在本地运行此代码时,我不断收到错误
Expression 'undefined' used with directive 'caret' is non-assignable!。我已阅读 the doc,据我所知,我已按照说明进行了修复,但无济于事。 - 奖励:为什么在 jsfiddle 中我没有收到这样的错误。小提琴只是默默地失败了。那是怎么回事?
谢谢!
【问题讨论】:
-
我认为@Lois 的回答更常见于标题中的角度问题。
标签: angularjs angularjs-directive