Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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_Components - Fatal编程技术网

Angularjs 角度:计算传递到组件属性的表达式

Angularjs 角度:计算传递到组件属性的表达式,angularjs,components,Angularjs,Components,如何将角度表达式的值传递给组件的属性?我正在从API获取值 app.controller.js $http.get(apiUrl).then(function(resp) { $scope.name = resp.data.name; }) ... export const Person = { templateUrl: 'person.html', bindings: { firstName: '@' }, controller: function() {

如何将角度表达式的值传递给组件的属性?我正在从API获取值

app.controller.js

$http.get(apiUrl).then(function(resp) {
  $scope.name = resp.data.name;
})
...
export const Person = {
  templateUrl: 'person.html',
  bindings: {
      firstName: '@'
  },
  controller: function() {
      console.log(this.firstName);
  }
}
person.component.js

$http.get(apiUrl).then(function(resp) {
  $scope.name = resp.data.name;
})
...
export const Person = {
  templateUrl: 'person.html',
  bindings: {
      firstName: '@'
  },
  controller: function() {
      console.log(this.firstName);
  }
}
app.html

...
<person first-name="name">
。。。
出于某种原因,它没有计算
name
,而是在控制台中记录
undefined

有没有办法让它将
Tom
记录在控制器内

感谢您的帮助。提前谢谢


我已经设置了一个JSFIDLE

&
用于表达式,
@
用于插值字符串,所以请尝试使用

firstName: '&'
然后
this.firstName()
应该计算传入的表达式

另外,
firstName
$onInit
之前不保证已初始化,因此如果您这样做

bindings: {
    firstName: '&'
},
controller: function() {
    this.$onInit = function() {
        console.log(this.firstName());
    }
}
你应该得到你期望的结果

供参考:

$onInit()
-在构建元素上的所有控制器并初始化其绑定后,对每个控制器调用



编辑:
在提供了额外的信息之后,您可能应该使用单向绑定(
我应该解释一下,我是从API获取数据的,所以加载时不容易获得。我已经设置了一个jsFiddle@realph如果它只是一个变量而不是一个表达式,那么你可以使用一个单向的
@realph我在回答中分叉了你的jsFiddle来显示一种方法。