javascript / angular指令变量

时间:2016-04-28 04:23:12

标签: angularjs

我有一个角度指令,它接受一个对象,我需要重新分配该对象,我不能这样做

<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。有人对此有所了解吗?

3 个答案:

答案 0 :(得分:0)

将您的代码更改为

scope: {selectedObject: '=selectedObject',},

答案 1 :(得分:0)

执行$scope.B = $scope.A;运行时同时指向ab的同一对象。但是当你做$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();
}