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();
  });