我有一个角度指令,它接受一个对象,我需要重新分配该对象,我不能这样做
<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-if时才有效...我需要在这种情况下使用ng-if。有人对此有所了解吗?
答案 0 :(得分:0)
将您的代码更改为
scope: {selectedObject: '=selectedObject',},
答案 1 :(得分:0)
执行$scope.B = $scope.A;
运行时同时指向a
和b
的同一对象。但是当你做$scope.B = {Name: "BBB"};
时,var B被分配了一个新的引用,这对你来说是个问题。
只需像
那样分配属性$scope.B.Name = "BBB";
将导致A的Name属性也被更改。
答案 2 :(得分:0)
在转让后尝试使用$scope.digest();
link: function ($scope, $element, $attrs) {
$scope.selectedObject = null;
$scope.selectedObject = { Name: "AAA" };
$scope.digest();
}