指令定义函数,用scope定义一个接口,父控制器接收后为什么变成两个参数?

来源:5-11 搜索页业务逻辑编写(1)

qq_发潮烧_0

2017-03-25

在tab.html中点击调用click(item)函数。在tab.js中处理这个函数,$scope.tabClick(tab),这是的参数tab,应该是一个对象{id:'city',name:'城市'}。通过tabClick: '&'设置一个接口。在app-tap这个指令上调用tab-click="tClick(id,name)",这时变成了两个参数。这时console出来的是“city 城市”。为什么从一个对象$scope.tabClick(tab)变成了tClick(id,name)两个参数,是什么拆解的,不太明白。


写回答

3回答

慕雪1613582

2017-03-25

和传入对象的属性名有关系。只能传入对象参数拥有的属性名称,如:

//指令中
var item = {
  id: 'mk',
  name: 'imooc',
  aaa: 'balabala'
};
$scope.tabClick(item);
//视图中
tab-click="tClick(abc)
0
0

慕粉1900438865

2017-04-23

想了半天原来这个原因,同问,

最后一个应该是tab-click='tClick(a,b,c)'?打错了?

0
0

qq_发潮烧_0

提问者

2017-03-25

我刚才看您回答其他同学的,$scope.tabClick(tab)必须要传入一个json对象格式的参数,通过内置的逻辑,把他解析了。因为这个json对象里面有两个值,id:city,name:城市。 所有调用时tClick(id,name)是拆分成两个参数,如果这个json里面有三个值。那调用时tClick(id,name,xxx)。就会拆分成三个参数呗?

0
1
慕雪1613582
xxx必须为传入对象的属性名
2017-04-23
共1条回复

Angular JS 仿拉勾网 WebApp 开发移动端单页应用

基于AngularJS,仿拉勾网开发一个招聘类的移动端单页应用

1660 学习 · 857 问题

查看课程