我使用带有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标记值不会改变吗?
感谢
答案 0 :(得分:1)
尝试这样做:
scope: { debtval: '@myDebtVal' }
并像这样使用它:
<span my-debt my-debt-val="{{debt}}" >
请记住,当您想要访问指令的属性时,需要遵循一个命名约定。您的指令名为“myDeb&#39;”,因此其属性应按照此名称命名为myDebXxxYyy&#39;使用与指令名称本身相同的驼峰式扩展。
您可能想知道的另一件事是您可以这样做:
scope: { val: '@' }
然后像以前一样使用它:
<span my-debt my-debt-val="{{debt}}" >
,范围的名称当然是$scope.val
而不是$scope.debtval
。