javascript - angularjs - 在范围或 ng-model 上使用 'string' 名称

标签 javascript html angularjs

在普通的 JavaScript 中,你可以像这样声明变量;

var obj = {};
obj["item-text"] = {};
obj["item text"] = {};

此处给出示例:http://jsbin.com/petafu/1/edit

而且完全没问题。但这似乎不适用于 $scope。我试图这样做但无法真正理解为什么,但找不到任何资源谈论它......

JS

app.controller('ControllerName', function($scope){
   $scope['item text'] = {};
   $scope['item-text'] = {};
});

HTML

<div ng-model="item text"></div>
<div ng-model="item-text"></div>

最佳答案

如果你真的想要连字符和空格,我可能会选择 controller as语法。

查看:

<body ng-controller="MainCtrl as ctrl">
  <p>Hello {{ctrl.name}}!</p>
  <input ng-model="ctrl.name1" />
  <input ng-model="ctrl['name-2']" />
  <input ng-model="ctrl['name 3']" />
</body>

Controller :

app.controller('MainCtrl', function($scope) {
  this.name = 'World';
  this['name1'] = "world1";
  this['name-2'] = "world 2";
  this['name 3'] = "world 3";
});

使用您的 obj 变量。

Controller :

var obj = {};
obj["item-text"] = {};
obj["item text"] = {};
$scope.obj = obj;

查看:

<body ng-controller="MainCtrl">
  <input ng-model="obj['item text']" />
  <input ng-model="obj['item-text']" />
</body>

http://plnkr.co/edit/OqTN59Ewsc6ydKnjSGbx?p=preview

关于javascript - angularjs - 在范围或 ng-model 上使用 'string' 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25043148/

相关文章:

html - css如何将代码放入容器中

html - 如何让 div 填满所有宽度并像 TR 中的 TDs 一样排成一行?

html - 强制网站呈现 doctype html5 标准和 IE9 浏览器

javascript - 使用pdfMake创建PDF后如何下载zip文件

javascript - 如何知道 ngClick 何时在元素上触发?

javascript - 在 Angular.js 单元测试中,是否约定在 '$' 前面省略 'scope' 而不是 '$rootScope'(或其他注入(inject)服务)?

javascript - 在 Angular-Resource 的帮助下将值插入 db.json

javascript - Bootstrap 表单在提交时不调用 JS 函数

javascript - 如何在单击时将新的 UI 元素添加到列表中?

javascript - swiper.js - 幻灯片更改时的幻灯片 CSS 动画问题