角度函数未在<span>标记中调用

时间:2016-09-28 14:14:50

标签: javascript html angularjs

我有一张数据表已加载。但我需要一个特定列的数据由函数生成。并且没有调用该函数。我不知道为什么

功能

vm.itemName = '';

vm.getItemName = function (item) {
    termService.getItemName({ itemId: term.itemID })
     .then(function (result) {
           vm.itemName = JSON.stringify(result.data);
    });
};

page.cshtml

<td>
    <span>{{vm.itemName }}</span>
</td>

当页面呈现时,列为空。当我调试应用程序时,我意识到该函数未被调用。

N.B该函数通过Web API调用c#方法。

EDITS

我在下面使用此函数获取itemsList,它运行正常。

vm.terms = [];

function getTermsList() {
    termService.getTermsList({}).success(function (result) {
       vm.terms = result.items;
    });
}

我的表格看起来像这样,所以你知道'item'来自哪里

<tbody>
    <tr ng-repeat="item in vm.terms">
        <td>....</td>
    </tr>
</tbody>

1 个答案:

答案 0 :(得分:-1)

“getter”在使用SERVER SIDE渲染时不会被神奇地调用,但我们可以按照您的预期使用它:

vm._itemName = '';
var itemNamePromise = null;
//define itemName getter
Object.defineProperty(vm, "itemName", { 
  get: function() {
    itemNamePromise = if(itemName === '' && itemNamePromise === null){ //to avoid multile service calls
      termService.getItemName({ itemId: term.itemID })
       .then(function (result) {
           vm._itemName = JSON.stringify(result.data);
      });
    }
    return vm._itemName;
  }
}); 

请参阅以下参考资料: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/get