Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Angularjs中的模板将参数传递到绑定的函数中(消歧)?_Angularjs_Angularjs Directive - Fatal编程技术网

通过Angularjs中的模板将参数传递到绑定的函数中(消歧)?

通过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>' . . .

我在这个网站上学习:

示例代码执行以下操作:

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>'
.
.
.
//此处定义了一个名为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。这是指令中的键所指的内容,而不是指令中的“杂务”。如果我理解正确,您可能会错。它与args
logChore
正在执行的操作无关。这与在视图中交给的键有关,并有意义地替换它们。请参见此示例:函数采用
someOtherName
,而键完全是其他名称。
scope: {yourAttribute: '&'}
template: '<div ng-click"yourAttribue({yourArg : whateverValueYouWantItToRepresent,
                                       yourOtherArg : someValueYouAlsoWantToRepresent})">