2016-09-28 73 views
0

我有一个数据表加载。但是我需要一个特定列上的数据由一个函数生成。而且这个函数没有被调用。我不知道为什么角函数不叫<span>标签

功能

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> 

Whem呈现页面柱是空的。当我调试应用程序时,我意识到这个函数没有被调用。

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

编辑

我使用itemsList低于这个功能得到和它完美的作品。

vm.terms = []; 

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

而我的表网格看起来是这样的,所以你知道“项目”来自

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

何时调用vm.getItemName(item)? – Dimitri

+0

@Dimitri我需要在数据加载到表时调用它。 (页面加载) –

+0

你需要调用'vm.getItemName()'某处 –

回答

-1

的“吸气”不叫当你与服务器端渲染工作,神奇等,但是我们可以我

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

:当你以这种方式期待它的工作0

参考兼容性参考: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/get