我有一个接收对象的角度指令,我需要重新分配该对象,但我不能
<span search-drop-down selected-object="selectedObjectVar"></span>
var myApp = angular.module('myApp',[]);
myApp.controller('MyCtrl', function ($scope) {
$scope.selectedObjectVar = {Name: "Bob"};
});
myApp.directive('searchDropDown', function () {
return {
restrict: 'A',
scope: {
selectedObject: '='
},
link: function ($scope, $element, $attrs) {
$scope.selectedObject = {Name: "Sam"};
}
};
更新:http://jsfiddle.net/Lvc0u55v/3170/
只有当您将ng show更改为ng时,这才有效,如果。。。在这种情况下,我需要使用ng if。有人对此有所了解吗??
将代码更改为
scope: {selectedObject: '=selectedObject',},
当您执行$scope.B = $scope.A;
时,运行时为a
和b
引用相同的对象。但当你做$scope.B = {Name: "BBB"};
时,var B被分配了新的参考,这对你来说是个问题。
相反,只像一样分配属性
$scope.B.Name = "BBB";
这将导致A的Name属性也发生更改。
在分配后尝试使用$scope.digest();
link: function ($scope, $element, $attrs) {
$scope.selectedObject = null;
$scope.selectedObject = { Name: "AAA" };
$scope.digest();
}