angularjs'@'本地范围属性没有做绑定

时间:2014-09-21 05:00:04

标签: angularjs

我使用带有angularjs的asp.net mvc4,并且我在使用带有隔离范围的指令时遇到了问题。

这就是我在js文件中所做的: -

.controller('myTransactionController', ['$scope', '$http', function ($scope, $http) {

$scope.debt = 100;

}])
.directive('myDebt', function () {
   function link(scope, element, attr) {
    element.text(scope.debtval);
}
return {
    scope: { debtval: '@mydebtval' },
    link: link
}
});

这是在视野中

<input name="name" data-ng-model="debt" />

<span my-debt mydebtval="{{debt}}" >{{debt}}</span>

至于&#39; @&#39;考虑局部范围,它是单向绑定属性,它应该改变 当其父级的值发生变化但是当我改变输入类型的值(即父范围值)时,span标记的值不会改变。

当我更改输入标记的值时,有人能说出为什么span标记值不会改变吗?

感谢

1 个答案:

答案 0 :(得分:1)

尝试这样做:

scope: { debtval: '@myDebtVal' }

并像这样使用它:

<span my-debt my-debt-val="{{debt}}" >

Example

请记住,当您想要访问指令的属性时,需要遵循一个命名约定。您的指令名为“myDeb&#39;”,因此其属性应按照此名称命名为myDebXxxYyy&#39;使用与指令名称本身相同的驼峰式扩展。

您可能想知道的另一件事是您可以这样做:

scope: { val: '@' }

然后像以前一样使用它:

<span my-debt my-debt-val="{{debt}}" >

,范围的名称当然是$scope.val而不是$scope.debtval