angularjs – 指令范围属性根据属性名称而中断
发布时间:2020-12-17 17:52:42 所属栏目:安全 来源:网络整理
导读:我有一个非常奇怪的现象,指令和隔离范围,其中范围中的属性工作或不起作用取决于属性的命名.如果我使用 {check:'@check'} 它工作正常,如预期的那样.但是,如果我使用: {checkN:'@checkN'} 定义的函数永远不会被分配.一个例子如下: HTML: item ng-repeat="li
我有一个非常奇怪的现象,指令和隔离范围,其中范围中的属性工作或不起作用取决于属性的命名.如果我使用
{check:'@check'} 它工作正常,如预期的那样.但是,如果我使用: {checkN:'@checkN'} 定义的函数永远不会被分配.一个例子如下: HTML: <item ng-repeat="list_item in model.list" model="list_item" checkN="checkName()" check="checkName()" position="$index"></item>' 使用Javascript app.directive('item',function(){ return { restrict: 'E',replace : false,scope:{ $index: '=position',check: '&check',checkN: '&checkN',model:'=' },template: '',link: function(scope,element,attrs){ console.log(scope.check()) console.log(scope.checkN()) } } }); 然后控制台会给我以下内容: The checkName function has been called [which is the return string of the function] undefined 它有可能取决于大写字母的用法吗?这将是非常“意外”的行为. 谢谢你的帮助 schacki 解决方法
Html不区分大小写,因此myAttribute和myattribute根据浏览器的不同而无法区分. Angularjs的作者做出了一个关于从html传递到javascript的设计决策,反之亦然.
ngRepeat指令将在视图(html)中用作ng-repeat.同样,您的指令checkN应该用作angular的check-n以将其识别为指令. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |