2016-04-22 43 views
2

我正在一个小项目上根据哪个类(对象)被激活来生成字符串。我希望它这样有些工作:angularjs从属性生成字符串

的(我< = 30)如果(OBJ [$ i] == isActive)字符串= “X = 1”:字符串= “X = 0”; echo x;

现在我有控制器,启用和禁用类,如果对象被点击。如何根据具有某些类的对象生成字符串?得到如下结果:x = 1 & y = 0 & z = 0 & xyz = 1。对于某些原因,它没有更新我

var classApp = angular.module('classApp', []); 
 
classApp.controller('classCtrl', function ($scope) { 
 
\t $scope.isActive1 = false; 
 
\t $scope.isActive2 = false; 
 
\t var build = ""; 
 
\t if($scope.isActive1==true?build="x=1&":build="x=0&"); 
 
\t $scope.link = build; 
 
});
body { 
 
    background: #fff; 
 
    -webkit-font-smoothing: antialiased; 
 
    padding: 40px; 
 
    text-align: center; 
 
} 
 
.active { 
 
\t -webkit-filter: grayscale(0%); 
 
    filter: grayscale(0%); 
 
} 
 
img { 
 
\t -webkit-filter: grayscale(100%); 
 
    filter: grayscale(100%); 
 
    width: 128px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="classApp" ng-controller="classCtrl"> 
 
    <img src="http://icons.iconarchive.com/icons/paomedia/small-n-flat/1024/sign-check-icon.png" ng-class="{'active': isActive1}" ng-click="isActive1 = !isActive1"/> 
 
    <img src="http://icons.iconarchive.com/icons/paomedia/small-n-flat/1024/sign-check-icon.png" ng-class="{'active': isActive2}" ng-click="isActive2 = !isActive2"/> 
 
    test={{link}} 
 
</div>

回答

0

你需要告诉angulajs至$范围发生变化时,你在你的控制器只有一次设置。每次使用$ watch的概念都需要更新。

var classApp = angular.module('classApp', []); 
 
classApp.controller('classCtrl', function ($scope) { 
 
\t $scope.isActive1 = false; 
 
\t $scope.isActive2 = false; 
 
\t var build = ""; 
 
\t 
 
    $scope.$watch('isActive1', function(newValue) { 
 
     if(newValue==true?build="x=1&":build="x=0&"); 
 
\t   $scope.link = build; 
 
    }); 
 
});
body { 
 
    background: #fff; 
 
    -webkit-font-smoothing: antialiased; 
 
    padding: 40px; 
 
    text-align: center; 
 
} 
 
.active { 
 
\t -webkit-filter: grayscale(0%); 
 
    filter: grayscale(0%); 
 
} 
 
img { 
 
\t -webkit-filter: grayscale(100%); 
 
    filter: grayscale(100%); 
 
    width: 128px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="classApp" ng-controller="classCtrl"> 
 
    <img src="http://icons.iconarchive.com/icons/paomedia/small-n-flat/1024/sign-check-icon.png" ng-class="{'active': isActive1}" ng-click="isActive1 = !isActive1"/> 
 
    <img src="http://icons.iconarchive.com/icons/paomedia/small-n-flat/1024/sign-check-icon.png" ng-class="{'active': isActive2}" ng-click="isActive2 = !isActive2"/> 
 
    test={{link}} 
 
</div>

+0

所以..我不得不做的是使用$手表的事情吗?哇,我想我需要再次阅读所有的角度指南。 现在如果我正要用更多的变量替换字符串?如何添加一些东西到字符串? –

+0

是啊...ü只设置一次控制器,在那里你称为控制器,控制器如何知道你的范围值改变.... – nisar