Javascript 角度:在ng控制器中添加属性
在Javascript 角度:在ng控制器中添加属性,javascript,angularjs,Javascript,Angularjs,在app.js中,我添加了一个gem对象来表示我们gemStore中的一个产品。如何将其分配给StoreController的产品属性 (function(){ var gem = { name: 'Azurite', price: 2.95 }; var app = angular.module('gemStore', []); app.controller("StoreController",function($scope){ }); })(); 将gem属性分配给sco
app.js
中,我添加了一个gem对象来表示我们gemStore中的一个产品。如何将其分配给StoreController的产品属性
(function(){
var gem = { name: 'Azurite', price: 2.95 };
var app = angular.module('gemStore', []);
app.controller("StoreController",function($scope){
});
})();
将gem属性分配给scope对象
(function(){
var gem = { name: 'Azurite', price: 2.95 };
var app = angular.module('gemStore', []);
app.controller("StoreController",function($scope){
$scope.product = gem;
});
})();
然后,您将在StoreController的模板中输出“product”的属性
<div>
{{product.name}}
</div>
<div>
{{product.price}}
</div>
然后在模板中,我在这里使用了ng controller方法,因为您没有说明如何将模板连接到控制器
<div ng-controller="StoreController">
{{product.name}}
{{product.price}}
</div>
{{product.name}
{{product.price}}
您可能应该在以下位置创建它:
现在,它可以通过以下方式显示在您的页面中:
<div>Name: {{gem.name}}, Price: {{gem.price}}</div>
Name:{{gem.Name},Price:{{{gem.Price}
范围是指应用程序模型的对象。这是一个
表达式的执行上下文。作用域按层次结构排列
结构,它模拟应用程序的DOM结构。示波器可以
观看表达式并传播事件
在应用程序中创建一个固定服务。js
您还可以将其放入真正的服务中并访问它
持续服务示例
像下面
(function(){
var gem = { name: 'Azurite', price: 2.95 };
var app = angular.module('gemStore', []).constant('GEM', {
name: 'Azurite',
price: 2.95
});
app.controller("StoreController",function($scope, GEM){
$scope.product.name = GEM.name;
$scope.product.price = GEM.price;
//if you don't want to create a constant service then
//user directly like
//$scope.product = gem;
});
})();
<div>
{{product.name}}
</div>
<div>
{{product.price}}
</div>
(函数(){
var gem={name:'Azurite',价格:2.95};
var app=angular.module('gemStore',[])。常量('GEM'{
名称:“蓝铜矿”,
价格:2.95
});
应用控制器(“StoreController”,函数($scope,GEM){
$scope.product.name=GEM.name;
$scope.product.price=GEM.price;
//如果您不想创建一个固定的服务,那么
//用户直接喜欢
//$scope.product=gem;
});
})();
{{product.name}
{{product.price}}
您最好使用gem工厂:
angular.module('gemStore', []).
factory('GemFactory', [ function() {
var gem = { name: 'Azurite', price: 2.95 };
return gem;
};
]);
angular.module('gemStore',[]).controller("StoreController",function($scope, GemFactory){
$scope.product = GemFactory();
});
通过这种方式,您可以将它注入任何需要您宝贵美丽宝石的控制器中。此外,你将有一个宝石厂,这是注定要让你肮脏的财富在任何时候 然后,您的应用程序逻辑中出现了一些问题,您的问题没有明确说明。也许从链接中添加更多关于控制器范围的解释会更好?@Pureferret Yep,好主意。我在文档中添加了有关角度范围的相关部分。:-)@NarasinghaPadhi是的,它可以工作,但它的规模可怕。尝试创建另一个文件,并将控制器放入该文件中。避免使用全局变量,因为将角度变量包装在closjure(function(){})()中。但是,在您的另一个文件中,var gem将是未定义的。仅仅在任何角度范围之外声明一个var被认为是不好的做法。在服务、工厂或controllerOkie中定义它。我会选择最佳实践。谢谢这是Angular网站上的教程?
(function(){
var gem = { name: 'Azurite', price: 2.95 };
var app = angular.module('gemStore', []).constant('GEM', {
name: 'Azurite',
price: 2.95
});
app.controller("StoreController",function($scope, GEM){
$scope.product.name = GEM.name;
$scope.product.price = GEM.price;
//if you don't want to create a constant service then
//user directly like
//$scope.product = gem;
});
})();
<div>
{{product.name}}
</div>
<div>
{{product.price}}
</div>
angular.module('gemStore', []).
factory('GemFactory', [ function() {
var gem = { name: 'Azurite', price: 2.95 };
return gem;
};
]);
angular.module('gemStore',[]).controller("StoreController",function($scope, GemFactory){
$scope.product = GemFactory();
});