0
我嘗試在一個角度指令內創建一個函數,該函數應該只更改一個對象值。更改指令中函數參數的對象值
它不會直接傳遞變量的函數工作:
<body ng-controller="MainCtrl">
<div test ng-click="changeVar(variable.value)">{{ variable.value }}</div>
</body>
app.directive('test', [function(){
return {
link: function(scope, elem, attrs) {
scope.variable = {
value : "bla"
};
scope.changeVar = function(value) {
value = "hhuhu"
};
}
}
}]);
但傳遞父對象不:
<body ng-controller="MainCtrl">
<div test ng-click="changeObj(variable)">{{ variable.value }}</div>
</body>
app.directive('test', [function(){
return {
link: function(scope, elem, attrs) {
scope.variable = {
value : "bla"
};
scope.changeObj = function(obj) {
obj.value = "hhuhu"
};
}
}
}]);
爲什麼我必須通過父對象的函數覆蓋該值,並且不能直接通過該值來覆蓋它?我錯過了什麼嗎?
這就是javascript的工作原理。檢查例如這個問題:http://stackoverflow.com/questions/13104494/does-javascript-pass-by-reference – apieceofbart