javascript/angular指令变量中的对象引用



我有一个接收对象的角度指令,我需要重新分配该对象,但我不能

<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;时,运行时为ab引用相同的对象。但当你做$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();
}

最新更新