2015-04-01 99 views
2

我上this jsfiddle工作,它是在angularjs 1.2.17
然而,當我嘗試用angularjs 1.3.14的same script提示錯誤,看到控制檯。共享數據控制器之間,Angularjs 1.3版本

最後,當我再次嘗試this fiddle與1.3.14版本:

<div ng-app='app'> 
    <div ng-controller="firstctrl"> 
     <input type="text" ng-model="data.msg" /> 
     <h1>{{data.msg}}</h1> 

    </div> 
    <div ng-controller="secondctrl"> 
     <input type="text" ng-model="data.msg" /> 
     <h1>{{data.msg}}</h1> 

    </div> 
</div> 

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

app.factory('Data', function() { 
    return { 
     msg: "I am data from a service" 
    }; 
}); 
app.controller('firstctrl', ['$scope', function($scope, Data){ 
    $scope.data = Data; 
}]); 
app.controller('secondctrl', ['$scope', function($scope, Data){ 
    $scope.data = Data; 
}]); 

我不能使它發揮作用:它不給錯誤,但data.msg了兩個控制器不更新。

我做錯了什麼?

回答

1

不要使用感應鍵如Datadata也不會忘記,包括依賴性Fiddle

+0

我很高興找到這個答案立刻對SO,在這個問題上花了幾個小時後, – 2015-04-01 02:10:30

0

我相信這個問題是關係到如何角線與模塊(應用程序),做申報正道控制器控制器就像是在你的fiddle的這款改裝版:

//... your code myApp.controller('firstctrl', ['$scope', 'Data', function ($scope, data) { $scope.data = data; }]);

正如你可以看到firstctrl現在將按預期。

你的第三個小提琴不起作用,因爲你沒有在控制器的聲明函數中注入工廠。

0

您應該給控制器中的數組賦予'數據'標識符。

我的回答是以下:

app.controller('firstctrl', ['$scope', 'Data', function($scope, Data){ 
    $scope.data = Data; 
}]); 
app.controller('secondctrl', ['$scope', 'Data', function($scope, Data){ 
    $scope.data = Data; 
}]); 
相關問題