通过Angularjs中的模板将参数传递到绑定的函数中(消歧)?
我在这个网站上学习: 示例代码执行以下操作: js代码:通过Angularjs中的模板将参数传递到绑定的函数中(消歧)?,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我在这个网站上学习: 示例代码执行以下操作: js代码: // Some directive named kid defined here . . . template: '<input type="text" ng-model="chore">' + ' {{chore}}' + ' <div class="button" ng-click="done({chore:chore})">I\'m done!</div>' . . .
// Some directive named kid defined here
.
.
.
template: '<input type="text" ng-model="chore">' +
' {{chore}}' +
' <div class="button" ng-click="done({chore:chore})">I\'m done!</div>'
.
.
.
//此处定义了一个名为kid的指令
.
.
.
模板:“”+
“{{chore}}”+
“我完了!”
.
.
.
html代码:
<div ng-app="choreApp">
<div ng-controller="ChoreCtrl">
<kid done="logChore(chore)"></kid>
</div>
</div>
这是什么
({key:value})
语法?如果我更改键或值,整个过程将停止工作。你如何正确使用这个?规则是什么?将方法传递给指令时,方法参数需要key:value符号。例如,您可能希望提供在单击指令元素时执行的回调方法:
在控制器中:
$scope.aMethod = function(arg1) {
...
};
在HTML中:
<div my-directive some-method="aMethod()">
控制器中定义的方法接受一个参数。但是,当您通过html将方法传递给指令时,请注意空括号。指令不知道这些arg或它们应该被调用什么,因此需要显式地传递arg键和值。tl;博士
在html中:
<your-directive your-attribute="yourMethod(yourArg)">
<your-directive your-attribute="yourMethod(yourOtherArg)">
在js中:
scope: {yourAttribute: '&'}
template: '<div ng-click"yourAttribue({yourArg : whateverValueYouWantItToRepresent,
yourOtherArg : someValueYouAlsoWantToRepresent})">
作用域:{yourAttribute:'&'}
模板:'
基本上,它可以让你用你想要的任何表情替换预先确定的“键”。不过,目前还不确定这什么时候有用。这确实可以让您深入到
隔离范围
键是您在使用指令的函数绑定时所期望的参数,即done=“logChore(chore)”
,值是您绑定到的ngModel。例如:-done=“logChore(arg1,arg2)”
然后您将以ng click=“done({arg1:something,arg2:somethingelse})”的形式传递。
@PSL我不明白的是为什么我不能像您通常那样传递值?为什么我需要知道键?@PSL似乎({key:value})
用于将视图中传入的key
替换为有时存储在指令中的值。这很奇怪。。。编写视图的程序员应该如何知道要使用的魔术键?如果您查看链接中的示例,它会执行类似于
的操作,并且在视图中传递的键似乎是argName
。logChore函数定义在哪里。它应该是一个带有chore键的arg。这是指令中的键所指的内容,而不是指令中的“杂务”。如果我理解正确,您可能会错。它与argslogChore
正在执行的操作无关。这与在视图中交给的键有关,并有意义地替换它们。请参见此示例:函数采用someOtherName
,而键完全是其他名称。
scope: {yourAttribute: '&'}
template: '<div ng-click"yourAttribue({yourArg : whateverValueYouWantItToRepresent,
yourOtherArg : someValueYouAlsoWantToRepresent})">