0

我是angulartypescript的初學者。角度綁定數組和布爾/字符串數據類型

我的打字稿一個模塊內的服務看起來像下面

module MyModule { 
class HelloService { 

    public data:string[] = ["1","2","3"]; 
    public booleanvalue:boolean = false; 
    public stringvalue:string = "hai"; 

    public test() { 
     this.data.push("hai"); 
     this.booleanvalue = true; 
     this.stringvalue = "Hai welcome"; 
    } 

    } 

    angular.module('MyModule', []).service('hexafy', function() { 
     return new HelloService(); 
    }); 
} 

我編譯上面和injecting後,在一個HTML文件中添加div元素下獲得的JavaScript基準

<div ng-app="myApp" ng-controller="myCtrl"> 
    <br/> 
     <button ng-click="buttonClick()">Click Me! </button> <br> 
    <br/> 
    <label>{{value}}</label><br> 
</div> 

myCtrl service hexafy外觀如下

var myApp = angular.module('myApp',['MyModule']); 

myApp.controller('myCtrl', ['$scope' , 'hexafy' , MyController]); 

function MyController($scope, hexafy) 
{ 
    var vm = $scope; 
    vm.thirdpartyfactory = hexafy; 
    vm.value = vm.thirdpartyfactory.stringvalue;// the problem is in this line 
    vm.buttonClick = function(){ 
    vm.thirdpartyfactory.test(); 
} 

這是我的問題。 如果我將「數據」綁定到vm.value,它會在按鈕單擊時更改,但如果我將booleanvaluestringvalue綁定到vm.value,則它不會更新。

什麼是這個

回答

1

的原因,我認爲它的,因爲當你這樣做:

var array = [1,2,3]; 
var copy = array ; 
copy.push(4); 
// array : [1,2,3,4] 

它,因爲你綁定s通過參考bla;

但是當你做

var number = 2; 
var other = number; 
other += 1; 
// number : 2 
// other : 3 

它,因爲你通過綁定othernumber;

來解決這個問題,你需要做的:

<div ng-app="myApp" ng-controller="myCtrl"> 
    <br/> 
    <button ng-click="buttonClick()">Click Me! </button> <br> 
    <br/> 
    <label>{{thirdpartyfactory.stringvalue}}</label><br> 
</div> 
相關問題