Почему $scope.items
в First
и Second
контроллеры все еще имеют ценность First
, почему он оленья кожа изменения значения From controller
после вызова функции Load()
?обмен данными между контроллерами угловых JS
HomeController:
namespace MvcApplication6.Controllers
{
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
return View();
}
public JsonResult GetData()
{
string data = "From controller";
return Json(data, JsonRequestBehavior.AllowGet);
}
}
}
Index.cshtml
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet" />
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css" rel="stylesheet" />
<script src="~/Scripts/jquery-1.9.1.min.js"></script>
<script src="~/Scripts/angular.js"></script>
<script src="~/Scripts/MyScript/Custom.js"></script>
<script src="~/Scripts/angular-animate/angular-animate.min.js"></script>
<script src="~/Scripts/angular-ui/ui-bootstrap.min.js"></script>
<script src="~/Scripts/angular-ui/ui-bootstrap-tpls.min.js"></script>
<div ng-controller="LoadData" id="data">
</div>
<div ng-controller="First">
{{items}}
</div>
<div ng-controller="Second">
{{items}}
</div>
<script>
$(document).ready(function() {
angular.element(document.getElementById('data')).scope().Load();
});
</script>
Custom.js
var app = angular.module('MyApp', ['ngAnimate', 'ui.bootstrap']);
app.controller('First', function ($scope, sharedProperties) {
$scope.items = sharedProperties.getProperty();
console.log("First controller",sharedProperties.getProperty());
});
app.controller('Second', function ($scope, sharedProperties) {
$scope.items = sharedProperties.getProperty();
console.log("Second controller", sharedProperties.getProperty());
});
app.controller('LoadData', function ($scope,$http, sharedProperties) {
$scope.Load = function() {
$http({ method: 'GET', url: '/Home/GetData' }).
success(function (data, status, headers, config) {
sharedProperties.setProperty(data);
console.log('Loaded data',data);
}).
error(function (data, status, headers, config) {
alert('error');
});
}
}
);
app.service('sharedProperties', function() {
var property = 'First';
return {
getProperty: function() {
return property;
},
setProperty: function (value) {
property = value;
}
};
});